電子書籍の厳選無料作品が豊富!

フルスクリーンモードで、WinAPIの「GetOpenFileName」や
「GetSaveFileName」などのコモンダイアログを使用する際、
稀にダイアログが表示されない時がありました。
おそらくフルスクリーンモードで表示されている領域よりも外側に
表示されていると思うので、ダイアログを表示する座標を指定したいのですが、
その方法が分からず困っております。

ご存知の方いらっしゃいましたらお教えください、
宜しくお願い致します。

A 回答 (1件)

 こんにちは。



 OPENFILENAME構造体のlpfnHookとFlagsメンバを以下の様にしてから、

//http://msdn.microsoft.com/en-us/library/ms646839 …
ofn.lpfnHook = OFNHookProc;
ofn.Flags = OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_ENABLEHOOK | OFN_EXPLORER;

//http://msdn.microsoft.com/ja-jp/library/cc410977 …
//フックプロシージャ
UINT CALLBACK OFNHookProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
switch(iMsg)
{
case WM_INITDIALOG:
{
HWND hParent = ::GetParent(hWnd);
RECT rc;
::GetWindowRect(hParent, &rc);
const int x = (1440/*スクリーン横幅*/ - (rc.right - rc.left)) / 2;
const int y = (900/*スクリーン縦幅*/ - (rc.bottom - rc.top)) / 2;
::SetWindowPos(hParent, NULL, x, y, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
}

break;
}
return 0;
}

 で出来ませんか。
    • good
    • 0
この回答へのお礼

回答して頂きありがとう御座います。
変更してみたところ、ダイアログの座標を指定する事が出来ました。

ですが、稀にダイアログが表示されない現象は改善されませんでした。
どうやら他に問題があるようなのでもう少し調べてみます。
どうもありがとう御座いました。

お礼日時:2009/04/16 02:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!