2012-01-09 4 views
0

まず第一に、ここに私の設定です:ウィンドウ内のボタン(CreateWindow)(CreateWindow)を介してGetOpenFileNameを呼び出すDialogBoxParamとGetOpenFileName関数

VS2010/Debug/C++ Win32 Project/Vista Home Premium 

は私には問題得ない:開くダイアログが正常に動作しますが、私はクリックすることができ、今

...別のフォルダなどに移動し、私は同じ(DLGPROC)WndProcで、(それが舞台裏CreateWindowを呼び出す必要があります)と同じGetOpenFileNameを呼び出すDialogBoxParamと私のCreateWindowを交換してください。ここでは、開くダイアログが奇妙な動作をしています。マウスのダブルクリックだけのように見えます(= ofn.lpstrFileを入力し、開くダイアログを閉じる)。 [開く]ボタンと[キャンセル]ボタンをクリックできず、ナビゲートできません。

誰もこれまでに経験したことがありますか? Openダイアログが「フリーズ」のような理由で知られている理由。親に属していないか(ofn.hwndOwner = hwnd; ofn.hwndOwner = NULL;)、同じ問題が発生します。あなたはバグだと同じ(DLGPROC)のWndProc

を書いた

おかげ N

+1

いくつかのコードを投稿してください。コードの漠然とした説明はそれだけです。 –

答えて

2

。ダイアログプロシージャとウィンドウプロシージャは同じものではありません。彼らは別のルールに従います.DlgProcルールに従うべきときにWndProcルールに従えば、悪いことが起こります。

+0

古典的な "キャストするためのキャスト"ソリューション[もう一度打つ](http://blogs.msdn.com/b/oldnewthing/archive/2004/01/15/58973.aspx):) – Anders

+0

あなたは正しいです。 DefWindowProcはDefDlgProcではありません。ありがとうございました。 (私ができるなら+1) – Nestor

+0

@Nestor:あなたは答えを受け入れることができます... – Anders

関連する問題