2016-05-04 7 views
-3

最も簡単なMFCアプリケーションであるSingle Document。MFC C++ CDC pDCへのハンドルの取得は、WM_KEYDOWNハンドラからOnDraw()で編集されました

考えられるのは、デフォルトのCDC pDCが何らかの方法でonDraw()関数から編集(色付け)されているということです。ユーザーが番号をクリックすると、pDCの色を使って表示させたいと思う。

WM_KEYPRESSのデフォルトのハンドラ関数OnKeyDownを使用すると、編集したpDCのポインタが取得されません。

私の質問は、編集したpDCにアクセスする方法です。 私は欠けている簡単な解決策があると確信しています、助けてください。私はあなたがしたいと思う何をすべきかMFCで

答えて

2

私は私が正しく質問を理解し、100%確実ではないけど、私は試してみましょう....

いつもと推奨される方法はonDraw()ですべての描画を処理することですのみ。

だから、onKeyDown()ハンドラの中で、あなたはメンバ変数に押されたキーを格納します(または多分キーのvectorまたはlistにプッシュ描画する)、その後Invalidate(false)を呼び出します。これにより、ウィンドウにWM_PAINTメッセージが生成され、最終的にonDraw()で処理されます。ここで、現在のメンバー変数値に基づいて正しいものを描画できます。

onDraw()の外側にCPaintDCを作成して描画することもできます。しかし、通常、MFCアプリケーションでは、すべての図面が1か所に保持されています。 Windowsはいつでもあなたのアプリに再描画を要求することができ、それはWM_PAINTメッセージでそれを行います。

関連する問題