C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Vistaでの最大化


(過去ログ 44 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■23403 / inTopicNo.1)  Vistaでの最大化
  
□投稿者/ AKIRA (1回)-(2008/08/13(Wed) 19:56:31)

分類:[Windows 全般] 

2008/08/13(Wed) 20:01:41 編集(投稿者)

MFCで作成したMDIアプリケーションを、Vistaで最大化すると右端に隙間ができます。

この隙間を表示しない方法を教えてください。
引用返信 編集キー/
■23662 / inTopicNo.2)  Re[1]: Vistaでの最大化
□投稿者/ きたぴぃ (1回)-(2008/08/20(Wed) 09:48:57)
No23403 (AKIRA さん) に返信
> 2008/08/13(Wed) 20:01:41 編集(投稿者)
> 
> MFCで作成したMDIアプリケーションを、Vistaで最大化すると右端に隙間ができます。
> 
> この隙間を表示しない方法を教えてください。

当方でも同様の現象で悩んでいましたが、とりあえず下記の修正で右端の隙間は無くなりました。
他に影響が無いか等は未確認ですので、あしからず。

void CChildFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
    lpMMI->ptMaxTrackSize.x += GetSystemMetrics( SM_CXSIZEFRAME ) * 2;
    CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
}

引用返信 編集キー/
■23725 / inTopicNo.3)  Re[2]: Vistaでの最大化
□投稿者/ AKIRA (3回)-(2008/08/20(Wed) 23:10:36)
No23662 (きたぴぃ さん) に返信
>
> 当方でも同様の現象で悩んでいましたが、とりあえず下記の修正で右端の隙間は無くなりました。
> 他に影響が無いか等は未確認ですので、あしからず。
>
> void CChildFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
> {
> lpMMI->ptMaxTrackSize.x += GetSystemMetrics( SM_CXSIZEFRAME ) * 2;
> CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
> }
>
ありがとうございます。
MSDNで調べたところ、Vistaでは下記のように[SetProcessDPIAware]APIを呼び出せば良いようです。

HMODULE hModule = GetModuleHandle(_T("user32.dll"));
ASSERT(hModule);
if(hModule)
{
typedef BOOL (WINAPI* PFNSETPROCESSDPIAWARE)();
PFNSETPROCESSDPIAWARE pfnSetProcessDPIAware =
(PFNSETPROCESSDPIAWARE)GetProcAddress(hModule, "SetProcessDPIAware");
if(pfnSetProcessDPIAware)
{
pfnSetProcessDPIAware();
}
}

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -