WTL 学习笔记 -- ResizeDialog
来源:互联网 发布:女生长高知乎 编辑:程序博客网 时间:2024/05/17 04:41
导读:
WTL 学习笔记-- ResizeDialog
记得以前写过一个ActiveX控件,只要把它放在对话框上,它遍历对话框上的所有控件,并把它们管理起来,只要对话框大小变化时,它自动调整各个控件的大小和位置。这可能是我写的第一个ActiveX控件,比较失败,虽然功能实现了,但只是无条件的缩放控件的大小和位置,结果是有的控件变得很难看。
WTL里已经内置这种功能,不用我们自己实现了。它提供了一个CdialogResize类,帮助实现自动调整对话框上控件的大小和位置。这个功能很好用,简单有效。可以按下列步骤进行:
1. 让对话框从CdialogResize类继承过来:
classCMainDlg: publicCDialogImpl, public CDialogResize
2. 定义自动调整大小的控件列表
BEGIN_DLGRESIZE_MAP(CMainDlg)
DLGRESIZE_CONTROL(IDC_LIST, DLSZ_SIZE_Y)
DLGRESIZE_CONTROL(IDC_EDIT, DLSZ_SIZE_X| DLSZ_SIZE_Y)
DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X)
DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X)
DLGRESIZE_CONTROL(ID_APP_ABOUT, DLSZ_MOVE_X)
END_DLGRESIZE_MAP()
3. 在消息处理中加入消息转发功能
BEGIN_MSG_MAP(CMainDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
CHAIN_MSG_MAP(CDialogResize)
END_MSG_MAP()
4. 在OnInitDialog里做点初始化工作
LRESULTOnInitDialog(UINT/*uMsg*/, WPARAM/*wParam*/, LPARAM/*lParam*/, BOOL&/*bHandled*/)
{
// center the dialog on the screen
CenterWindow();
// set icons
HICONhIcon= (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
IMAGE_ICON, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR);
SetIcon(hIcon, TRUE);
HICONhIconSmall= (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);
SetIcon(hIconSmall, FALSE);
ATLASSERT(GetDlgItem(IDOK) != NULL);
ATLASSERT(GetDlgItem(ID_APP_ABOUT) != NULL);
DlgResize_Init();
returnTRUE
}
OK,搞定!
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=659499
本文转自
http://blog.csdn.net/absurd/archive/2006/04/11/659499.aspx
WTL 学习笔记-- ResizeDialog
记得以前写过一个ActiveX控件,只要把它放在对话框上,它遍历对话框上的所有控件,并把它们管理起来,只要对话框大小变化时,它自动调整各个控件的大小和位置。这可能是我写的第一个ActiveX控件,比较失败,虽然功能实现了,但只是无条件的缩放控件的大小和位置,结果是有的控件变得很难看。
WTL里已经内置这种功能,不用我们自己实现了。它提供了一个CdialogResize类,帮助实现自动调整对话框上控件的大小和位置。这个功能很好用,简单有效。可以按下列步骤进行:
1. 让对话框从CdialogResize类继承过来:
classCMainDlg: publicCDialogImpl
2. 定义自动调整大小的控件列表
BEGIN_DLGRESIZE_MAP(CMainDlg)
DLGRESIZE_CONTROL(IDC_LIST, DLSZ_SIZE_Y)
DLGRESIZE_CONTROL(IDC_EDIT, DLSZ_SIZE_X| DLSZ_SIZE_Y)
DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X)
DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X)
DLGRESIZE_CONTROL(ID_APP_ABOUT, DLSZ_MOVE_X)
END_DLGRESIZE_MAP()
3. 在消息处理中加入消息转发功能
BEGIN_MSG_MAP(CMainDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
CHAIN_MSG_MAP(CDialogResize
END_MSG_MAP()
4. 在OnInitDialog里做点初始化工作
LRESULTOnInitDialog(UINT/*uMsg*/, WPARAM/*wParam*/, LPARAM/*lParam*/, BOOL&/*bHandled*/)
{
// center the dialog on the screen
CenterWindow();
// set icons
HICONhIcon= (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
IMAGE_ICON, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR);
SetIcon(hIcon, TRUE);
HICONhIconSmall= (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);
SetIcon(hIconSmall, FALSE);
ATLASSERT(GetDlgItem(IDOK) != NULL);
ATLASSERT(GetDlgItem(ID_APP_ABOUT) != NULL);
DlgResize_Init();
returnTRUE
}
OK,搞定!
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=659499
本文转自
http://blog.csdn.net/absurd/archive/2006/04/11/659499.aspx
- WTL 学习笔记 -- ResizeDialog
- WTL 学习笔记 -- ResizeDialog
- WTL 学习笔记 -- ResizeDialog
- WTL学习笔记(1)
- WTL 学习笔记 -- CSplitterWindow
- WTL 学习笔记 -- ActiveX
- WTL 学习笔记 -- mru
- WTL 学习笔记 -- ActiveX
- WTL 学习笔记 -- CSplitterWindow
- WTL 学习笔记 -- CSplitterWindow
- WTL 学习笔记 -- ActiveX
- WTL学习笔记(1)
- WTL学习笔记(转)
- WTL学习笔记0
- WTL 学习笔记 -- CSplitterWindow
- WTL 学习笔记 -- 消息流
- WTL 学习笔记 -- 消息流
- WTL学习笔记——(2)WTL Hello World !
- 细读《Effective C++》之四
- 细读《Effective C++》之五
- 细读《Effective C++》之六
- 如何减少睡眠时间却保持健康
- 细读《Effective C++》之七
- WTL 学习笔记 -- ResizeDialog
- WTL 学习笔记 -- CSplitterWindow
- 解决struts中文乱码的办法
- 细读《Effective C++》之八
- 细读《Effective C++》之九
- 细读《Effective C++》之十
- SQL额外增加自动递增序号
- 利用ajax.dll进行Ajax的开发
- 执行控件的render并输出string