ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

SendMessage でメッセージを送る 

更新 : 2010/06/24

 


解説:
Windows はシステムやユーザー、ウィンドウに対して様々なメッセージをやり取りしています。
今回は、システムやユーザーがウィンドウに対して送るメッセージの中から簡単なところで、"閉じる" を扱ってみます。

VCL では Form1 から起動した Form2 は Form2->Close(); で閉じることができます。
同じ動作は Win32API の SendMessage 関数を使えば、実現可能です。

ちょっと寄り道:
SendMessage はウィンドウにメッセージを送ります。
    LRESULT SendMessage(
        HWND hWnd,         // 送り先ウィンドウのハンドル
        UINT Msg,             // 送るメッセージ
        WPARAM wParam, // メッセージの最初のパラメータ
        LPARAM lParam    // メッセージの 2 番目のパラメータ
    );

    パラメータ
    hWnd     ウィンドウハンドル。
    Msg     メッセージ。
    wParam メッセージ特有の追加情報。
    lParam    メッセージ特有の追加情報。
    戻り値   メッセージ処理の結果。

 "閉じる" で使うメッセージには WM_CLOSE を使います。
 WM_CLOSE はウィンドウを閉じたい時に、 システムやユーザーがウィンドウに対して送るメッセージで、これによりウィンドウが閉じられます。

使用例:
Win32API の SendMessage 関数を使って、Form2 を閉じてみます。

コンポーネントは、 Button を二つ適当に配置してください。
Form2 を作成して、Form1 に インクルードしておきます。

Button1 の OnClick イベントで Form2 を表示させ、Button2 の OnClick イベントで閉じています。

同じ動作は、VCL の Perform 関数でも行えます(Tips を参照してください)。

//-------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Form2->Show();
}
//-------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
     SendMessage(Form2->Handle, WM_CLOSE, 0, 0);
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.