怎样用MFC基于对话框的属性表单,属性页作为软件界面,一个属性表单包含多个属性页相当于MFC中的选型卡功能
1个回答
展开全部
对话框做主框架。
1,创建Dialog Based Appcation Exe with MFC wizard
2,添加资源Large Property Page 一个,后按住CTRL点击它并拖动,重复三次这样就得到了三个Large Property Page
保持默认的ID。
3,用Wizard 以PAGE3作为模板,生成我们的嵌套的CMyPage,它派生自CPropertyPage。
4,CPropertyPage 类添加4个成员变量:
CPropertyPage m_page1;
CPropertyPage m_page2;
CPropertyPage m_page3;
CPropertySheet m_sheet;
5,CPropertyPage 类添加消息响应:WM_CREATE WM_SIZE,并添加如下code:
int CMyPage::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CPropertyPage::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_page1.Construct(IDD_PROPPAGE_LARGE);
m_page2.Construct(IDD_PROPPAGE_LARGE1);
m_page3.Construct(IDD_PROPPAGE_LARGE2);
m_sheet.Construct("SomeInfo",this);
m_sheet.AddPage(&m_page1);
m_sheet.AddPage(&m_page2);
m_sheet.AddPage(&m_page3);
m_sheet.Create(this,WS_CHILD | WS_VISIBLE);
return 0;
}
void CMyPage::OnSize(UINT nType, int cx, int cy)
{
CPropertyPage::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
// TODO: Add your message handler code here
CRect rc;
GetWindowRect(rc);
ScreenToClient(rc);
rc.InflateRect(0,5,0,0);
m_sheet.SetWindowPos(&wndTop,rc.left,rc.top,rc.right,rc.bottom,NULL);
// TODO: Add your message handler code here
}
5,处理对话框类:
1》添加菜单资源,IDM_MENU1 ,右键设置属性,Minimize Maximize 打上勾,菜单设为以上菜单。
2》添加成员:
CPropertyPage m_page1;
CPropertyPage m_page2;
CPropertyPage m_page3;
CMyPage m_MyPage;
CPropertySheet m_sheet;
别忘了#include“MyPage.h"...哈哈。。。。、
3》添加消息响应:WM_CREATE WM_SIZE,并添加如下code:
int CDialog_PropertyDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_page1.Construct(IDD_PROPPAGE_LARGE);
m_page2.Construct(IDD_PROPPAGE_LARGE1);
m_page3.Construct(IDD_PROPPAGE_LARGE2);
m_MyPage.Construct(IDD_PROPPAGE_LARGE3);
m_sheet.Construct("SomeInfo",this);
m_sheet.AddPage(&m_page1);
m_sheet.AddPage(&m_page2);
m_sheet.AddPage(&m_page3);
m_sheet.AddPage(&m_MyPage);
m_sheet.Create(this,WS_CHILD | WS_VISIBLE);
return 0;
}
void CDialog_PropertyDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rc;
GetClientRect(rc);
/* GetWindowRect(rc);
ScreenToClient(rc);*/
rc.InflateRect(0,5,0,0);
// m_edit.SetWindowPos(&wndTop,rc.left,rc.top,rc.right,rc.bottom,NULL);
m_sheet.SetWindowPos(&wndTop,rc.left,rc.top,rc.right,rc.bottom,NULL);
}
好了截止现在,一个嵌套的属性表框架做好了,效果如下:
记得把属性页和对话框拉大一点噢!!!
美化的话我就不再废话了。。。至于那个ListCtrl,看一下MSDN应该都会的。。。。。
哈,完了。。。。。。。
追问
大神辛苦啊 这是你自己写的例子?有资料的话,给个链接,谢谢
追答
网上资料很多
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询