MFC中如何去掉CPropertySheet界面下方的按钮?

如题所述

  MFC中CPropertySheet为属性页,页面最下端自动生成的确定、取消、帮助和应用按钮无用,且放置在最下端不太美观,需要将其去掉,笔者在编程过程中采用的方法如下:1.去掉应用按钮。在CPropertySheet的构造函数中添加添加语句:this-m_psh.dwFlags |= PSH_NOAPPLYNOW;作用是去掉应用按钮。2.去掉帮助按钮的操作稍微复杂一些,需要在CPropertySheet的构造函数中加上如下语句:this-m_psh.dwFlags &= ~(PSH_HASHELP);page1.m_psp.dwFlags&= ~(PSP_HASHELP);page2.m_psp.dwFlags&= ~(PSP_HASHELP);然后才能添加属性页:this-AddPage(&page1);this-AddPage(&page2);需要注意的是,由于添加属性页的操作不一定在CPropertySheet的构造函数中,因此只需要保证CPropertySheet对象和属性页CPropertyPage对象中都有去掉上述去掉帮助按钮的语句即可。另外,帮助按钮还可以采用如下方法去掉:  在CPropertySheet的OnInitDialog()函数中加入如下语句(若没有生成OnInitDialog,可在ClassView中添加虚函数OnInitDialog):CWnd *pWnd =GetDlgItem(IDHELP);if(pWnd && pWnd-GetSafeHwnd()){pWnd-ShowWindow(false);}3.去掉确定和取消按钮。在CPropertySheet的OnInitDialog()函数中加入如下语句:1CWnd *pWnd =GetDlgItem(IDOK);2if(pWnd && pWnd-GetSafeHwnd()){3pWnd-ShowWindow(false);4}56pWnd =GetDlgItem(IDCANCEL);7if(pWnd && pWnd-GetSafeHwnd()){8pWnd-ShowWindow(false);9}上述方法去掉按钮后,在界面下方的按钮会消失,但是会留下空白,需要重新调整窗口,消除空白,此时可以考虑如下方法:4.去掉四个按钮后消除界面下方的空白。1GetDlgItem(IDOK)-ShowWindow(SW_HIDE);23GetDlgItem(IDHELP)-ShowWindow(SW_HIDE);45GetDlgItem(IDCANCEL)-ShowWindow(SW_HIDE);67GetDlgItem(ID_APPLY_NOW)-ShowWindow(SW_HIDE);89//获取窗体尺寸10CRect btnRect;11GetDlgItem(IDCANCEL)-GetWindowRect(&btnRect);1213CRect wdnRect;14GetWindowRect(&wdnRect);1516//调整窗体大小17::SetWindowPos(this-m_hWnd, HWND_TOP,0,0上述代码添加在CPropertySheet类的OnInitDialog()函数中,可以消除隐藏按钮后留下的空白。
温馨提示:内容为网友见解,仅供参考
无其他回答

MFC中如何去掉CPropertySheet界面下方的按钮?
MFC中CPropertySheet为属性页,页面最下端自动生成的确定、取消、帮助和应用按钮无用,且放置在最下端不太美观,需要将其去掉,笔者在编程过程中采用的方法如下:1.去掉应用按钮。在CPropertySheet的构造函数中添加添加语句:this-m_psh.dwFlags |= PSH_NOAPPLYNOW;作用是去掉应用按钮。2.去掉帮助按钮的操作...

MFC中第二个界面按“上一步”按钮返回上一个界面怎么实现
上一步按钮:OnButton(){ CParentDlg *p=(CParentDlg*)GetParent();p->ShowWindow(SW_SHOW);CDialog::OnCancel;}

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

MFC中,创建对话框页面向导。将原先的下一步,改为图中的我接受。
CPropertySheet中任何函数里都可以:CWnd *pWnd = GetDlgItem(ID_WIZNEXT);获取下一步按钮的指针,然后通过SetWindowText函数就可以修改文字了。

CPropertyPage::OnOK\/\/mfc翻译
Now按钮时由框架调用,紧跟在框架调用OnKillActive之后。重写这个方法可以在用户放弃整个属性单时实现更多和当前选中页有关的行为。当用户选择OK或Apply Now按钮时,框架收到来自属性页的PSN_APPLY通知。如果你调用了CPropertySheet::PressButton,则OnOK不会被调用,因为此时属性页不会发送通知。

mfc 多个view 一个doc
简单说下吧,首先你要看下CPropertySheet和CPropertyPage两个类的说明。然后在资源视图构造N个对话框,这N个对话框对应N个选项卡,然后为N个对话框添加N个类,基类不要选CDialog,选择CPropertyPage,接着为CPropertySheet的子类构造N个数据成员,这些成员的类型就是刚才对应N个对话框派生的CPropertyPage的子类...

...界面,一个属性表单包含多个属性页相当于MFC中的选型卡功能_百度知 ...
1,创建Dialog Based Appcation Exe with MFC wizard2,添加资源Large Property Page 一个,后按住CTRL点击它并拖动,重复三次这样就得到了三个Large Property Page 保持默认的ID。3,用Wizard 以PAGE3作为模板,生成我们的嵌套的CMyPage,它派生自CPropertyPage。4,CPropertyPage 类添加4个成员变量: ...

MFC中属性页怎么非模态显示?
注意变量的生存周期,把sheet,page1 ,page2放到外面声明看看这个地方声明,函数一执行完,不就释放了么 补充:你试了么?你明白DoModal是模态的么?模态的到DoModal之后就阻塞了.直到窗体关闭了,你这些代码所在的函数才执行完.Create非阻塞

MFC有哪些基本类??分别代表什么意思
CSpinButtonCtrl 提供箭头按钮,用户可单击它,以增加或减少某个控件中的一个值 afxcmn.h CSplitterWnd afxext.h CStatic 用于标识另一个控件或给用户提供消息的简单文本框 afxwin.h CStatusBar afxext.h CStatusBarCtrl 提供一个层次窗口,通常放于父窗口的底部,用于显示关于应用程序的状态信息 afxcmn.h CStdioFile afx.h...

如何编写windows ce结构的应用程序
当InitInstance返回FALSE,MFC不再执行窗体消息循环。我可以通过使用CPropertySheet::Create()而不是使用CPropertySheet::DoModal()来生成一个非模态对话框。如果我这样做,程序就返回TRUE,窗体消息循环就会进行。如果生成一个非模态对话框而返回FALSE,就会退出消息循环。访问注册表 为了保存信息到注册表中,程序...

相似回答