コモンダイアログの表示位置を変更するにはフック関数にて位置を指定する.
またフック関数を使用するにはエクスプローラータイプのコモンダイアログでなければならない.
// OPENFILENAME 構造体のフック関連の設定
ofn.lpfnHook = HookProc;
ofn.Flags = OFN_ENABLEHOOK | OFN_EXPLORER;
// フック関数
// OFN_EXPLORER タイプでなければならない
UINT CALLBACK HookProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
if( message == WM_NOTIFY) {
LPOFNOTIFY lpOfn = (LPOFNOTIFY)lParam;
switch( lpOfn->hdr.code) {
case CDN_INITDONE: // ダイアログの作成時
// ここでウィンドウを移動する
// ウィンドウハンドルは hDlg ではなく GetParent( hDlg ) である
break;
}
}
return 0;
}
参照
クラス内コールバック関数