掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CFileDialogの表示サイズを変更するには? (ID:68496)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
簡単にまとめるとこんな感じになる。 static HHOOK g_hHookProcRet; static HWND g_hWnd; static RECT g_rectInit; // DoModal() を呼ぶ前に初期表示位置を設定しておく。 LRESULT CALLBACK CallWndRetFileDlgProc(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode < 0) { return ::CallNextHookEx(g_hHookProcRet, nCode, wParam, lParam); } LPCWPRETSTRUCT pMsg = reinterpretcast<LPCWPRETSTRUCT>(lParam); switch(pMsg->message) { case WM_SHOWWINDOW: if(g_hWnd && pMsg->hwnd == ::GetParent(g_hWnd)) { ::SetWindowPos(pMsg->hwnd, NULL, g_rectInit.left, g_rectInit.top, g_rectInit.right - g_rectInit.left, g_rectInit.bottom - g_rectInit.top, SWP_NOZORDER); } break; } return ::CallNextHookEx(g_hHookProcRet, nCode, wParam, lParam); } CMyFileDialog::CMyFileDialog(BOOL bOpen, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : CFileDialog(bOpen, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) { g_hHookProcRet = ::SetWindowsHookEx(WH_CALLWNDPROCRET, CallWndRetFileDlgProc, NULL, ::GetCurrentThreadId()); } CMyFileDialog::~CMyFileDialog() { g_hWnd = NULL; if(g_hHookProcRet) { ::UnhookWindowsHookEx(g_hHookProcRet); g_hHookProcRet = NULL; } } // CFileDialog::OnInitDialog() をオーバーライドして CFileDialog のウィンドウハンドルを取得する。 BOOL CMyFileDialog::OnInitDialog() { CFileDialog::OnInitDialog(); g_hWnd = GetSafeHwnd(); return TRUE; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.