質問です。
ウィンドウの初期サイズと最大、最小サイズを設定したいです。
1、CDialogを継承した
クラス ListBoxViewDlgをつくりました
2、メインクラスでダイアログに張り付いているリストビューに
メンバ変数を作成しました。
3、ClassWizard で PreTranslateMessageと、
PreCreateWindow などをオーバーライドしました
ClassWizardで表示されていなかったため、自分で
OnGetMinMaxInfoをオーバーライドしました。
実行してみるとオーバーライドした関数が呼ばれません
4、ClassWizard でOnSizeを作成しました。
この時は呼び出されます。
何かおかしなことしてるんでしょうか・・・?
よろしくお願いします。
自分でオーバーライドしたとありますが、
どのように記述したのかが気になります。
ようは、メッセージマップの記述が抜けていないのか、と・・・。
単に、同名の関数を追加すればよいということではないので。
お返事ありがとうございます。
CPP内には
void ListBoxViewDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
//最小サイズ指定
lpMMI->ptMinTrackSize.x = 640;
lpMMI->ptMinTrackSize.y = 480;
//最大サイズ指定
lpMMI->ptMaxTrackSize.x = 1024;
lpMMI->ptMaxTrackSize.y = 768;
CDialog::OnGetMinMaxInfo(lpMMI);
}
H内には
virtual void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
と・・。
もしかして、
afx_msg void OnSize(UINT nType, int cx, int cy);
は必要ってことでしょうか?
ん?
待ってください、OnGetMinMaxInfoは、ダイアログクラスListBoxViewDlgの方に
追加したいんですよね?
クラスウィザードには、WM_GETMINMAXINFOが出てきますよ?
あぁ、それだけでは、メッセージマップの記述がないですね。
WM_GETMINMAXINFOメッセージが来たときに、OnGetMinMaxInfoを呼び出します、という
メッセージと関数の対応付けをする必要があります。
cppファイルに、以下の記述があると思いますが、
そこに★を追加してみてください。
BEGIN_MESSAGE_MAP(ListBoxViewDlg, CDialog)
//{{AFX_MSG_MAP(ListBoxViewDlg)
ON_WM_GETMINMAXINFO() // ★
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
クラスウィザードにはWM_GETMINMAXINFOがなかったです。
ただ!★を追加したら呼び出されました!
もう少しメッセージマップを学ぼうと思います。
ありがとうございます!!