ウインドウサイズの制御 – プログラミング – Home

ウインドウサイズの制御
 
通知
すべてクリア

ウインドウサイズの制御


ミルファ
 ミルファ
(@ミルファ)
ゲスト
結合: 19年前
投稿: 1
Topic starter  

お世話になっております。

ユーザーがウインドウのサイズを変えようとした場合に、
一定の大きさより小さくできないようにしたいのですが、
どのようにすればよいのでしょうか?

環境はVisualStudio.NET2003のWTLです。
よろしくお願いします。


引用解決済
トピックタグ
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 22年前
投稿: 280
 

ウィンドウの変更イベントでサイズチェックを行い、最低限のサイズを確保する。


返信引用
aaaaa
 aaaaa
(@aaaaa)
ゲスト
結合: 19年前
投稿: 4
 

WM_GETMINMAXINFO メッセージを受け取る

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
lpMMI->ptMinTrackSize.x = *;
lpMMI->ptMinTrackSize.y =
*;
CFrameWnd::OnGetMinMaxInfo(lpMMI);
}


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

考え方的には逆になるような気がしますけれど。

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 =
*;
}

せっかく設定した値がデフォルトの実装でつぶされそうな気がします。


返信引用
ひろ
 ひろ
(@ひろ)
ゲスト
結合: 24年前
投稿: 149
 

こんにちは。
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;
}


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

どうせWTL使っているなら、#include <atlcrack.h> して、

// message map
MSG_WM_GETMINMAXINFO( OnGetMinMaxInfo )

// implements
void OnGetMinMaxInfo(LPMINMAXINFO lpMinMaxInfo)
{
//...
}

とかすれば楽チンです。(引数等はWTLのマクロがよきに計らってくれる)


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ここまで出来るとなるとWTLだとMFCとほとんど変わらないですね。
面白そうです。


返信引用
ひろ
 ひろ
(@ひろ)
ゲスト
結合: 24年前
投稿: 149
 

勉強になりました。

atlcrack.hの中身も難しくなかったので理解出来ました。
今度(WTL使う機会あれば。。。)は使ってみます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました