« プログラム悩み中 | トップページ | プログラムでUNLHA32 »

2006-01-26

プログラムでへぇ連発中

プログラムの作成で、不明点をネットで検索すると、結構いろんなことがわかる。以前は本だけで何とかしようとして挫折したのだが、これは便利だ。

というわけで、今回得た知識。エディットコントロールでは「禁則処理」が働いて、単語区切りでしか改行が行われない。それを解消する方法。

// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
    static HWND hEdit;

    switch (msg) {
        case WM_CREATE:
            hEdit = MyCreateEdit(hWnd);
            Edit_SetWordBreakProc(hEdit, MyEditWordBreakProc);
            break;

        case WM_CLOSE:
            if(MessageBox(hWnd, "終了してもよろしいですか", "確認",
                MB_YESNO | MB_ICONQUESTION) == IDYES) {
                DestroyWindow(hEdit);
            }
            break;

        case WM_DESTROY:
            PostQuitMessage(0);
            break;

        default:
            return DefWindowProc(hWnd, msg, wp, lp);
    }

    return 0L;
}

// ワードブレークプロシージャ
int CALLBACK MyEditWordBreakProc(LPTSTR lpch, int ichCurrent, int cch, int code)
{
    return 0;
}

ウィンドウプロシージャ部分はいろんなものをすっ飛ばしているので、自分で補完しておくこと。

ちなみに、このコードはNT系のWindowsでしか使えないらしい(つまり、Win95、98、Meではうまく行かない? 該当環境がないので未確認)。あと、ワードブレークプロシージャもcodeごとに切り分ける方がいいのだが、とりあえず省略(このままでも一応動くし)。詳しくはMSDNライブラリを参照のこと。

|

« プログラム悩み中 | トップページ | プログラムでUNLHA32 »

コンピュータ・プログラム」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/1757/8354803

この記事へのトラックバック一覧です: プログラムでへぇ連発中:

« プログラム悩み中 | トップページ | プログラムでUNLHA32 »