お世話になっております。
ユーザーがウインドウのサイズを変えようとした場合に、
一定の大きさより小さくできないようにしたいのですが、
どのようにすればよいのでしょうか?
環境はVisualStudio.NET2003のWTLです。
よろしくお願いします。
ウィンドウの変更イベントでサイズチェックを行い、最低限のサイズを確保する。
WM_GETMINMAXINFO メッセージを受け取る
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
lpMMI->ptMinTrackSize.x = *;
lpMMI->ptMinTrackSize.y = *;
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
考え方的には逆になるような気がしますけれど。
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
lpMMI->ptMinTrackSize.x = *;
lpMMI->ptMinTrackSize.y = *;
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
ではなくて
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
CFrameWnd::OnGetMinMaxInfo(lpMMI);
lpMMI->ptMinTrackSize.x = *;
lpMMI->ptMinTrackSize.y = *;
}
せっかく設定した値がデフォルトの実装でつぶされそうな気がします。
こんにちは。
WTLですよね??
良く分かりませんが次の感じで出来そうです。。。
メッセージマップに以下を追加して
MESSAGE_HANDLER( WM_GETMINMAXINFO, OnGetMinMaxInfo )
LRESULT OnGetMinMaxInfo(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL&
/*bHandled*/)
{
MINMAXINFO* pInfo = reinterpret_cast<MINMAXINFO*>( lParam );
pInfo->ptMinTrackSize.x = ???;
pInfo->ptMinTrackSize.y = ???;
return 0;
}
どうせWTL使っているなら、#include <atlcrack.h> して、
// message map
MSG_WM_GETMINMAXINFO( OnGetMinMaxInfo )
// implements
void OnGetMinMaxInfo(LPMINMAXINFO lpMinMaxInfo)
{
//...
}
とかすれば楽チンです。(引数等はWTLのマクロがよきに計らってくれる)
ここまで出来るとなるとWTLだとMFCとほとんど変わらないですね。
面白そうです。
勉強になりました。
atlcrack.hの中身も難しくなかったので理解出来ました。
今度(WTL使う機会あれば。。。)は使ってみます。