C3Lab研究室

Back to Title Page(OpenLab)タイトルページへ戻る

最終更新日: 1998年 10月 24日 土曜日

*1ポイントヒント:文字列操作を拡張しよう その1


 MFC以前は SendDlgItemMessage 関数や、GetDlgItem 関数でダイアログボックス内のアイテムを操作することが多かったのですが、MFC+ClassWizardを使用するとスマートかつ簡単にMFCクラスを使用しアイテムをコントロールすることが可能になります。

 操作法

・リソースエディタ(ダイアログボックスエディタ)で作成したダイアログボックスコントロールアイテムに対して「ClassWizard−>メンバー変数」にて変数の追加をアイテムに対して行い、生成します。
・アイテムに対する操作はメンバー変数がMFCクラスへになっていますのでそのまま指定クラスのメンバーを使用してアクセスすることができます。

 


現在インプリメントされているメンバー関数は以下のとおりです

全角半角文字列操作関数
void ZipSJis2Asc (LPSTR srcdest);
全角郵便番号を半角へ、半角入力OK、7桁の場合ハイフン挿入
void SujiSJis2Asc (LPSTR srcdest);
全角数字(ハイフン)を半角へ、半角入力OK
void ZipSJis2Asc (LPSTR src,LPSTR dest);
全角郵便番号を半角へ、半角入力OK、7桁の場合ハイフン挿入
void SujiSJis2Asc (LPSTR src,LPSTR dest);
全角数字(ハイフン)を半角へ、半角入力OK
平仮名全角−>片仮名半角
void Hirakana2Hankaku(LPSTR srcdest);
void Hirakana2Hankaku(LPSTR src,LPSTR dest);
漢字等変換できないキャラクター以外半角へ変更
void AllHankaku(LPSTR srcdest);
void AllHankaku(LPSTR src,LPSTR dest);
文字列比較関数
src1の文字列をsrc2の文字列の中から比較します
int StrCmpLen (LPSTR src1,LPSTR src2);
先頭から一致する長さを返す。
int StrCmpLenEx (LPSTR src1,LPSTR src2);
途中も含めて一致する最大文字数を返す。
int StrCmpStartEx(LPSTR src1,LPSTR src2);
途中も含めて一致する最大文字数の位置を返す。

 

 

ヘッダー部分のソースは以下のようになっています。


#ifndef __CLASS_CSTROBJ__
#define __CLASS_CSTROBJ__

#include <afxwin.h>

class CStrObj : public CObject{
    public :
        CStrObj();
        virtual ~CStrObj();
    public : // CFile
        LPSTR ReadLine(CFile *cf); // CFileから一行読み込み

    public : // 全角半角文字列操作関数
        void ZipSJis2Asc    (LPSTR srcdest); // 全角郵便番号を半角へ、半角入力OK、7桁の場合ハイフン挿入
        void SujiSJis2Asc    (LPSTR srcdest); // 全角数字(ハイフン)を半角へ、半角入力OK
        void ZipSJis2Asc    (LPSTR src,LPSTR dest); // 全角郵便番号を半角へ、半角入力OK、7桁の場合ハイフン挿入
        void SujiSJis2Asc    (LPSTR src,LPSTR dest); // 全角数字(ハイフン)を半角へ、半角入力OK

        // 平仮名全角−>片仮名半角
        void Hirakana2Hankaku(LPSTR srcdest);
        void Hirakana2Hankaku(LPSTR src,LPSTR dest);

        // ALL Hankaku
        void AllHankaku(LPSTR srcdest);
        void AllHankaku(LPSTR src,LPSTR dest);

    public : // 文字列比較関数
        int         StrCmpLen    (LPSTR src1,LPSTR src2);    //    先頭から一致する長さを返す
        int         StrCmpLenEx    (LPSTR src1,LPSTR src2);    //     途中も含めて一致する最大文字数を返す
        int         StrCmpStartEx(LPSTR src1,LPSTR src2);     //     途中も含めて一致する最大文字数の位置を返す
};


#endif // __CLASS_CSTROBJ__

Copyright (C) Kitaro 1998