ウィンドウ操作が行われたときに呼ばれるコールバック関数を設定します。
書式
typedef void (* LP_WINDOWPROC)(CPWindow *,CPSTWindowEvent);
void AttachWindowEvent(LP_WINDOWPROC WindowEvent);
|
パラメータ
WindowEvent
「void xxxx(CPWindow *,CPSTWindowEvent)」型のstatic関数を指定します。
コールバック関数の第一引数にCPWindowクラスのポインタ、第二引数にウィンドウの状態が格納されたCPSTWindowEvent構造体の情報が入ります。
解説
ウィンドウ操作が行われたときに呼ばれるコールバック関数を設定します。
なお、コールバック関数は必ずstaticの静的関数である必要があります。
コールバック関数の第二引数の「CPSTWindowEvent」では、EventCode に「CP_WINDOWEVENT_CREATE / CP_WINDOWEVENT_DESTROY / CP_WINDOWEVENT_PAINT / CP_WINDOWEVENT_ACTIVE / CP_WINDOWEVENT_NONACTIVE」が入ります。
「CP_WINDOWEVENT_RESIZE」によるウィンドウのリサイズの検出は現在サポートされていません。
コールバックを解除する場合は「DetachWindowEvent( )」を呼び出してください。
例
ウィンドウ(ダイアログ)を生成して、その中でコールバック関数より再描画のイベントを取得し、独自の描画を行います。
CPWindow win;
//ウィンドウイベントを受け取る
static void OnWindowEvent(CPWindow *lpWin,CPSTWindowEvent ev)
{
//再描画イベントの場合
if(ev.EventCode==CP_WINDOWEVENT_PAINT)
{
//描画開始
lpWin->BeginPaint();
//円を青色で塗りつぶし描画
lpWin->SetForegroundColor(CP_RGB(0,0,255));
lpWin->DrawFillCircle(20,20,100,100);
//描画終了
lpWin->EndPaint();
}
}
void main()
{
//ダイアログを生成する
win.Clear();
win.CreateNewDialog("TestDialog",120,120,120,120);
//ウィンドウイベントのコールバック関数指定
win.AttachWindowEvent(OnWindowEvent);
//ダイアログの表示・イベントループの開始
win.DoModal();
}
この例では、ウィンドウイベントが発生した場合に、「OnWindowEvent」関数が呼ばれます。
このコールバック関数内では、イベントの種類が再描画(CP_WINDOWEVENT_PAINT)であるときに、
「CPWindow::BeginPaint」から「CPWindow::EndPaint」で囲まれた中で独自の描画処理を行っています。
結果、以下のようなダイアログが表示されます。

ビルド時に必要なファイル
ライブラリ
| :CPartsLib.lib (Macintoshの場合は、CPartsCW.a)
|
ヘッダ
| :CPWindow.h
|
関連リンク
CPWindowクラス
CPWindow::DetachWindowEvent