オリジナルメッセージ – プログラミング – Home

通知
すべてクリア

オリジナルメッセージ


リク
 リク
(@リク)
ゲスト
結合: 21年前
投稿: 11
Topic starter  

//モードレスダイアログ
BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
//モードレスダイアログのメモリデバイスコンテキスト
static HDC hDMemorydc;
//バックバッファ
static HDC hdcDBackBuffer;
//モードレスに描画するビットマップ
static HBITMAP hDBackBufferBitmap;
TCHAR filename;

switch(uMsg)
{
case WM_CTLCOLORDLG:
//ダイアログの背景を白くする
return (long)GetStockObject(WHITE_BRUSH);
//バックバッファを作成するときのメッセージ
case WM_CREATE:
hdc = GetDC(g_hDialog);
//バックバッファ作成
setBackBufferDialog
(hWnd,hdc,&hDMemorydc,&hdcDBackBuffer,&hDBackBufferBitmap);
ReleaseDC(g_hDialog , hdc);
return TRUE;
case WM_BUFFERIMAGE:

//バックバッファに画像をコピーする
DrawBufferImage
(&hDMemorydc,&hdcDBackBuffer,&hDBackBufferBitmap,(TCHAR*)wParam);
MessageBox(hWnd,(TCHAR*)wParam,TEXT(押したボタン),MB_OK);
return TRUE;
}
return FALSE;
}

WM_BUFFERIMAGEはオリジナルメッセージなんですが
ダイアログボックスをクリックしたらこの部分が実行されてしまいます
そんな処理はしてないんですがこれはどうしてなのでしょうか?
VC2005でSDKです。


引用解決済
トピックタグ
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

WM_USER + n は、ダイアログのメッセージIDと競合します。
WM_APP + n を使いましょう。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

Kerryさんが書かれているように
WM_USERの一部は追加された新しいコントロールやらメッセージに使われていて
Win3.1時代のようにユーザーが全てを勝手に使える状態ではなくなっています。
今後、さらに追加で食い潰される可能性まで考えるとWM_USER + nではなくて
WM_APP + nを使った方が良いと思います。

最新の資料にはWM_APPを使いなさいという話が出ていたと思います。
出所をきちんと覚えていないのでここには書けませんけれど。


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

とりあえず、解決のようです。
http://forums.belution.com/ja/vc/000/384/54s.shtml

WM_CTLCOLORDLGが正しく動いているか疑問ですが。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました