トップページ > 記事閲覧
SetHookWinProcについて
名前:kiai 日時: 2015/11/25 15:28

#include "DxLib.h" LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { case WM_CLOSE: break; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wp, lp); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); SetHookWinProc(WndProc); if (DxLib_Init()==-1) return -1; SetDrawScreen(DX_SCREEN_BACK); DrawFormatString(0,0,GetColor(255,255,255),"hello world!"); while (!ProcessMessage()) { ScreenFlip(); } DxLib_End(); return 0; } 上記コードを実行すると描画画面が右下にずれて描画されてしまいます。 SetHookWinProc();を実行すると再現するようです。 ポップアップメニューを利用しようとしてこの現象に気付きました。 開発環境 Win7 64bit VisualStudio Community 2015 DXライブラリver3.15c 調査をよろしくお願い致します。
メンテ

Page: 1 |

Re: SetHookWinProcについて ( No.1 )
名前:管理人 日時:2015/11/26 00:19

SetHookWinProc で登録したウインドウプロージャでメッセージが処理されているかどうかに 関わらずDXライブラリ側でもメッセージを処理していますので、 WndProc の最後を return DefWindowProc(hWnd, msg, wp, lp); から return 0 ; に変更して いただければ問題は発生しなくなります よろしければお試しください m(_ _)m あと、前述の通り SetHookWinProc を使用していてもDXライブラリ側でもメッセージを 処理していますので、WM_CLOSE や WM_DESTROY のメッセージを処理するプログラムは 書かなくても大丈夫です
メンテ
Re: SetHookWinProcについて ( No.2 )
名前:kiai(解決) 日時:2015/11/26 00:36

丁寧な返信をありがとうございます。 私の勉強不足でした。申し訳ありません。 無事に動くことを確認しました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存