1、怎样用MFC基于对话框的属性表单,属性页作为软件界面,一个属性表单包含多个属性页相当于MFC中的选型卡功能 2014-03-26 21:07wohaoren88 | 分类:VC++ | 浏览356次 类似于这样的界面,不用TAB控件,而是由一个属性表单包含多个属性页完成,新手 给个例子啊 分享到: 2014-03-26 21:19提问者采纳 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
2、33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 对话框做主框架。 1,创建Dialog Based Appcation Exe with MFC wizard 2,添加资源
3、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 类添加
4、消息响应: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.Construc
5、t(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::On
6、Size(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.SetWindo
7、wPos(&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;
8、 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
9、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_she
10、et.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
11、 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应该都会的。。。。。 哈,完了。。。。。。。






