掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ボタンを再描画するには (ID:51027)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> MSDNで見てみたのですが「nmake」「makefile」の使い方がいまいちよくわからないので、ゆっくり調べてみます。 nmake(またはmake)というのは,更新日付をチェックして, 作りたいファイル(ターゲットファイル)が元となるファイル(依存ファイル)より古い場合, 指定の処理を行ってくれる物です。 「ビルド」と呼ばれる処理とほとんど同じです。 今回のようにmakefileがあるなら, makefileのあるディレクトリに移動して, >(VC++をインストールしたディレクトリ)\bin\vcvars32 >nmake と入力してやればターゲットが出来上がります。 まぁ,今回の場合,やっていることは, cl /c test.c rc test.rc link /SUBSYSTEM:WINDOWS /MACHINE:IX86 /ENTRY:WinMain test.objtest.res user32.lib gdi32.lib kernel32.lib で終わりですが。 #linkの行が長くなるのでレスポンスファイルtest.lrfを利用した。 チョコチョコっとサンプル書いてテストする場合,Developer Studio起動させてやるよりも, コマンドラインからやってしまった方が楽だったりします。 これを期にコマンドラインコンパイラの使い方も覚えてみるとよいでしょう。 > 「BiginPaint」の説明を見てみたのですが英語しかないので完全には読めませんが、取得するデバイスコンテキストから自動的に除外し てくれるとかそんな感じで書いてあるのはわかります。 > つまり、書き換えの不必要な領域を除外してくれていると言うことでいいんですよ ね。 そういうことです。 ウィンドウの後ろになったり,InvalidateRect/InvalidateRgnなどによって無効化された領域のみを書き換えます。 また,EndPaintにて無効化された領域を有効にします。 #B"e"ginPaintですよ。日本語読みにつられるとエラーがでますので……。 > また、「GetDC」を使った場合でいろいろやってみたのですが、WM_PAINTの最後に > 「return(DefWindowProc(hwnd, uMsg, wParam, lParam));」 > を追加するとまともっぽく描画できました。 > ただし、ウィンドウを移動させたときになどに残像が残ってしまうほど処理は遅いですが。 http://msdn.microsoft.com/library/en-us/gdi/pantdraw_4k6d.asp にはGetDCについての言及がないですし, http://msdn.microsoft.com/library/en-us/gdi/pantdraw_5f6t.asp には, >To draw in a window without using a WM_PAINT message, >the application uses the GetDC or GetDCEx function to retrieve a display device context for the window. [WM_PAINTメッセージ無しにウィンドウに描画するために, アプリケーションはウィンドウの為のディスプレイデバイスコンテキストを取得するために GetDCまたはGetDCEx関数を利用する。] とあります。 #[]内は私の超訳。 というわけで, ・WM_PAINT応答では,BeginPaint/EndPaintを使う ・それ以外のときはGetDC/ReleaseDCを使う この原則は崩さない方がよいです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.