怎样用MFC基于对话框的属性表单,属性页作为软件界面,一个属性表单包含多个属性页相当于MFC中的选型卡功能

类似于这样的界面,不用TAB控件,而是由一个属性表单包含多个属性页完成,新手 给个例子啊

对话框做主框架。
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应该都会的。。。。。
哈,完了。。。。。。。

追问

大神辛苦啊 这是你自己写的例子?有资料的话,给个链接,谢谢

追答

网上资料很多

温馨提示:内容为网友见解,仅供参考
无其他回答

怎样用MFC基于对话框的属性表单,属性页作为软件界面,一个属性表单包含多...
对话框做主框架。1,创建Dialog Based Appcation Exe with MFC wizard2,添加资源Large Property Page 一个,后按住CTRL点击它并拖动,重复三次这样就得到了三个Large Property Page 保持默认的ID。3,用Wizard 以PAGE3作为模板,生成我们的嵌套的CMyPage,它派生自CPropertyPage。4,CPropertyPage 类添加...

c++MFC基于对话框怎样实现多个页面在一个界面上显示切换?如图:_百度知...
control,点击一个菜单将list control显示成要显示的内容。其实你的几个选项就相当于button的功能一样,所以你可以从CButton继承后重绘控件,画成你想要的样子就ok了,然后什么统计、计量...都当成button按下

MFC中利用属性页建立类似Tab控件功能,在属性页上添加退出按钮如何关闭整 ...
这个实现起来很简单,首先CDialog提供一个static类指针,用于返回自身初始化好的指针。然后当点击退出按钮后,就调用这个static指针,发送WM_CLOSE即可。CDialog::m_dialog->PostMessage(WM_CLOSE, 0, 0);

MFC编写对话框界面,一个主界面下有多个按钮,点击按钮切换不同非模态对话...
把对话框预先创建好,然后将对话框指针保存起来 这样页面切换的时候,显示一个,隐藏其他的,就达到了切换的目的

vs2010怎么mfc创建属性页对话框
1.创建属性页对话框资源 属性页对话框资源的创建方法同向导对话框是一样的,上一讲中的对话框资源不需进行任何修改。2.创建属性页类 属性页类的创建和向导对话框的属性页类也基本一样,只是一般属性页对话框中不需要“下一步”和“完成”等按钮,所以上一讲中属性页类的OnSetActive和OnWizardFinish等...

mfc对话框tab control怎么用
一、新建一个MFC工程, 取名Tabctrl, 选择基于对话框, 然后点完成。二、删除对话框上默认添加的三个控件,添加Tab Control控件,属性设置:ID:IDC_TAB1 三、 为Tab Control控件绑定控件变量,变量名为m_Tab,类型为CTabCtrl。四、在TabCtrlDlg.cpp文件中,找到初始化函数OnInitDialog并在里面添加如下...

mfc中怎样在一个基于对话框程序中添加菜单栏 急。。。!
在对话框头文件中声明CMenu 变量,例如m_Menu;在OnInitDlg()中加入如下语句:m_Menu.LoadMenu("此处加入你的菜单id");SetMenu(&m_Menu);就可以了

MFC选项卡
1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl 2、创建两个新的对话框资源,其属性作如下修改:Border:none \/\/边界为空,...

用MFC编写一个基于对话框的计算器,在界面上怎么对按钮进行排列?_百度...
按住ctrl键把你想对齐的复选上然后点击标题栏上面有个layout打开就可以看到下拉菜单里面有左。右对齐等 或者有快捷图标,可以直接点击,就在build,debug那栏的下面有一行图标,就是了,注意一定复选上按钮才能用,再不行的话,给我发消息

mfc中 一个对话框类如何创建多个对话框?
另外,如果界面样子基本一致,那么使用同一个类是没问题的,只要在模态对话框声明后,传递一个参数过去,在OnInitDialog里面根据参数简单调整即可:CxxDialog dlg;dlg.modeSet = 2;\/\/自定义类成员,参数dlg.DoModal();\/\/OnInitDialog中if(modeSet==2) SetDlgItemText(IDC_BUTTON1,_T("改变参数...

相似回答