掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ピクチャーコントロールで再描画をするには? (ID:68349)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
情けない質問でスミマセン>_<; Windows XP SP2 + VS.NET 2005 Team Editionで、SDKでモードレスダイアログの アプリケーションを作成しています。 ダイアログ中のピクチャーコントロールに円などを描画することはできたのです が、例えばボタンを押したら円の色を変更する、と言った処理がうまくいかず・・・ ダイアログをいったん隠すなどすると再描画されるようで、色が変わっています。 ピクチャコントロールはサブルーチン化しており、初期化関数として void InitPIC(HWND hDlg) { hPic = GetDlgItem(hDlg, IDC_PIC); pGraphCtrl = GetWindowLong(hPic, GWL_WNDPROC); SetWindowLong(hPic,GWL_WNDPROC,(LONG)piccon_subproc); } で、コールバック関数として LRESULT CALLBACK piccon_subproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { PAINTSTRUCT ps; HDC hdc; switch (msg) { // 再描画処理を追加してみた case WM_PAINT: if(fDrawGraph == TRUE) { //描画開始 hdc = GetWindowDC(hWnd); hdc = BeginPaint(hWnd, &ps); //ここで描画処理 EndPaint(hWnd, &ps); ReleaseDC(hWnd, hdc); fDrawGraph = FALSE; } break; } // 続けて、本来のピクチャコントロールの処理をおこなう return CallWindowProc((WNDPROC)pGraphCtrl,hWnd,msg,wp,lp); } としています。 で、ダイアログプロシージャ内ではWM_INITDIALOGメッセージのときに InitGraph(hDlg); と初期化関数を呼び出し、ボタン押下時のメッセージで SendMessage(GetDlgItem(hDlg, IDC_PIC), WM_PAINT, 0, 0); としていますが・・・ WM_PEINTメッセージの送り方って、これじゃまずいんでしたっけ? それとも、SendMessageの後に何かしなければならないのでしたっけ? よろしくお願いいたします>_<
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.