资源描述
怎样用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
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,添加资源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应该都会的。。。。。
哈,完了。。。。。。。
展开阅读全文