• ベストアンサー

猫でもわかるプログラミング41章

http://www.kumei.ne.jp/c_lang/sdk/sdk_41.htm です。クリックしたらBMP画像を変化させるという単純なプログラムで、掲載されている内容はなんとか理解したのですが、一番最後のコメント。 ******************** クリックに対して反応が悪いときがあります。プログラムのアルゴリズムを変えてもっとスムースに動くように改良してみてください。 ******************** でつまづいています。どうもスムーズに動くようなアルゴリズムが組めません。 自分がやった方法として、 1.インスタンスハンドルをグローバル変数にして、早い段階でこれに代入しておく。 くらいしか思いつきません。というよりこれによって早くなるのかどうかもわかりません^^; 何か他に方法はあるでしょうか

  • arcsin
  • お礼率46% (194/417)

質問者が選んだベストアンサー

  • ベストアンサー
  • mi-si
  • ベストアンサー率35% (200/567)
回答No.1

足引っ張っているのは、DrawPicの部分ですね。 一番安全に高速化を試みるには、最初にWM_DRAWITEMが呼ばれた時点で、両方のBitmapデータをメモリ上に展開しておく(DeleteDC,DeleteObjectを発行しない)と言うところでしょうか?確保したDeleteDC,DeleteObjectはアプリの終了時に行います。(hmdcは配列化してグローバル変数にする) 後はhmdcは配列で切り替えてBitBlt。

arcsin
質問者

お礼

ありがとうございます。 言われてみて、おぉなるほど!って思いましたが、気づきませんでした・・ またお願いします

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

こんなのとか 仮想画面で高速描画 http://www.expertmg.co.jp/html/cti/vctips/others.htm#仮想画面で高速描画 あらかじめ、2つ仮想画面を作っておいて、内容を変えるときはBitBltだけにする。

参考URL:
http://www.expertmg.co.jp/html/cti/vctips/others.htm#仮想画面で高速描画
arcsin
質問者

お礼

参考URLありがとうございます。 勉強になりました^^v

関連するQ&A

  • 猫でもわかるプログラミング74章について

    http://www.kumei.ne.jp/c_lang/sdk/sdk_74.htm にあるプログラムなのですが ビルドすると、"OPENFILENAME: 定義されていない識別子です。" と出力されます。 何が原因なのでしょうか・・。 開発ソフトはVS2005 proを使っています。

  • 猫でもわかるプログラミング150章

    ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_150.htm のプログラムを作成しました。 内容:DDE接続でExcelからデータ読み込み 現象:DDE(D)→DDE開始(S)をすると"サーバーに接続失敗"となります。 指定されているR1C1形式にもしています。 原因がわかりません。 わかる方がいれば教えてください。 お願いします。

  • 猫でもわかるプログラミング WindowsSDK編 第一部6章

    WindowsXP cygwin gcc で以下のプログラム(Sample02.cpp)を作成しています。 http://www.kumei.ne.jp/c_lang/sdk/sdk_06.htm sample02.h,sample02.rc,sample02.cppをエディタで書いて同一フォルダに置いた後、コマンドプロンプトよりgccでコンパイルし、プログラムを実行すると、メッセージの書かれたウィンドウは表示されるのですが、メニューが表示されません。 どこかプログラムを変更しないとだめなんでしょうか? ご存知の方いらっしゃいましたらアドバイスお願い致します。

  • 猫でもわかるプログラミング161章

    http://www.kumei.ne.jp/c_lang/sdk2/sdk_161.htm にDLLを使ったメッセージフックについて説明があるのですが、どうもその通りにやってもうまくいきません。 まず、 1.dll作成する際にlibが生成されない。 2.ヘッダファイルに #define EXPORT extern "C" __declspec(dllexport) を付け加え、 EXPORT LRESULT CALLBACK .... という風にEXPORTをつけてビルドすると、libファイルが生成されるものの、それをメインプログラムのプロジェクトに追加しても リンク中... hookmain.obj : error LNK2001: 外部シンボル ""int __cdecl ResetHook(void)" (?ResetHook@@YAHXZ)" は未解決です hookmain.obj : error LNK2001: 外部シンボル ""int __cdecl SetHook(void)" (?SetHook@@YAHXZ)" は未解決です Debug/hook.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー というエラーが起きます。 このエラーが何を意味しているかもわからず、dllについても勉強中なのでどこを直せばいいかがみえてきません。どなたかわかる方がいらしたらよろしくお願いします VC++ 6.0 WinXP

  • MDIのメモ帳もどきにセーブ・ロード機能をつけるには

    猫でもわかるプログラミング WINSDK編 83章~85章のMDIのメモ帳もどきにセーブ・ロード機能を 付けるには、どうすればいいんですか? http://www.kumei.ne.jp/c_lang/sdk/sdk_83.htm http://www.kumei.ne.jp/c_lang/sdk/sdk_84.htm http://www.kumei.ne.jp/c_lang/sdk/sdk_85.htm MDIのドキュメントウィンドウのウィンドウハンドルを取得したら、 (これは前回質問して分かりました。hChildがハンドルですね?) その子ウィンドウであるエディットボックスのウィンドウハンドルを 取得したいんですが、どうすればいいですか? 要するに、「猫でもわかるWindowsプログラミング第2版」の int MyOpen(HWND hEdit);int MySaveAs(HWND hEdit);に手を加えるだけで テキストファイルを操作したいんです。

  • 猫でもできる ~ にエラーが出ます。

    以下、のサンプルプログラムを VC6.0 でコンパイルしようとすると custom01.rc (ダイアログ) のところでエラーが出ます。 http://www.kumei.ne.jp/c_lang/sdk3/sdk_261.htm error RC2104 : undefined keyword or key name: IDC_EDIT1 こちらのサンプルは、ストレートに動かないことはままあります。 VCのバージョンが違うからなのか、はたまたヘッダーファイルなどの追記忘れなのか。 (基本的に書いてあるとおりに忠実にやっているつもりなんですが)

  • 遺伝的アルゴリズムのプログラミングについてですが・・・

    遺伝的アルゴリズムのプログラムの基本的な流れが↓のページ http://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/opt/GA/GA.htm に 【1.初期化 2.生物集団の評価 3.交叉 4.突然変異 5.各個体の評価 6.淘汰】と書かれてあるのですが、 f(x) = sin(3x) + 0.5sin(9x) + sin(15x + 50) [0.1]区間の最大値を求める↓のプログラム http://www.sist.ac.jp/~suganuma/cpp/3-bu/18-sho/genetic/C++/gene_f.txt  に当てはめるとどの部分がどこに当たるのでしょうか…(また、このプログラムはどこからどのように読んでいけばいいのでしょうか…)。一応コメントが書かれていますがよく分かりません><; わかる方がいらっしゃいましたらよろしくお願いしますm( _ _ )m また、遺伝的アルゴリズムのプログラミングをする際の注意点があれば教えてください。

  • xcode インスタンス変数について

    iPhone SDKで開発を始めました、超初心者です。 xcode でインスタンス変数を、別のオブジェクトで参照したいのですが、 いろいろ試しましたが、どれもうまくいきません。 もっとも簡単な参照方法をご教授戴けると助かります。 参照したい変数は、String型です。 よろしくお願い致します。

  • Javacが認識されません。

    環境変数はユーザー環境変数に新規で変数名Path 変数値 C:\j2sdk1.4.2_18\bin システム環境変数にPathがあったので、 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\pcdNavi\bin;C:\Program Files\Fujitsu\sa\dll;C:\j2sdk1.4.2_18\binとしました。 (C:)直下にj2sdk.1.4.2_18フォルダーとJavaフォルダーがあります。 j2sdk.1.4.2_18フォルダー内のbinフォルダー内にjavac.exeコマンドがあります。 Javaフォルダー内にソースファイルのHello.javaがあります。 コマンドプロンプトにjava -versionでバージョンが表示されます。 cd \javaで C:\java>になり、javac Hello.javaと入力すると Error occurred during initialization of VM java/lang/NoClassDefFoundError:java/lang/Objectでエラー表示になります。 先に進めないので宜しく御願いします。

    • ベストアンサー
    • Java
  • fortran プログラミング

    ifortでは問題なくコンパイルできたプログラムを、gfortranで コンパイルしたところ、次のようなエラーが出ました。 DATA ENDWRD /' $END '/ 1 Error: Incompatible types in assignment at (1), CHARACTER(1) to REAL(8) Eが頭文字の変数をdouble precisionにするようにしてあるので、 多分double precisionにcharacterを代入しようとしているのが gfortranでは駄目なんだろうと思いますが、これを解消する方法 があれば教えていただけると助かります。よろしくお願いします。

専門家に質問してみよう