您的位置:首页 > 运维架构

在PropertyPage窗口下修改父窗口PropertySheet上的4个按钮

2010-04-24 12:39 411 查看
我们可以通过如下方法给表单添加属性页

CPage1 page1;
CPage2 page2;

//CPage1,CPage2是CPorpertyPage的派生类

CPropertySheet sheet("属性表单");
sheet.AddPage(&page1);
sheet.AddPage(&page2);

通过DoModal的方法创建了一个模态对话框。但是在模态对话框上已存在4个按钮“确定”,“取消”,“应用”,“帮助”。

如何去掉这些我们并没有添加的按钮资源是一件比较麻烦的事情。

http://www.vckbase.com/document/viewdoc/?id=427也介绍了如何更改以上的按钮。

在添加派生CPropertySheet类之后问题是能够解决的。

本文寻找了一种不需要修改CPropertySheet类的方法来改变这4个按钮。

可以在子窗口CPorpertyPage类上修改父窗口的按钮。

1.CPropertyPage类下添加WM_INITDIALOG消息.

2.在OnInitDialog()添加如下代码:

HWND hwnd,subhwnd;
hwnd=::GetParent(m_hWnd);

subhwnd=::GetDlgItem(hwnd,IDOK);
::DestroyWindow(subhwnd);
subhwnd=::GetDlgItem(hwnd,IDCANCEL);
::DestroyWindow(subhwnd);
subhwnd=::GetDlgItem(hwnd,ID_APPLY_NOW);
::DestroyWindow(subhwnd);
subhwnd=::GetDlgItem(hwnd,IDHELP);
::DestroyWindow(subhwnd);

//可以使用::ShowWindow(subhwnd,SW_HIDE);仅仅隐藏按钮

/*PostMessage(hwnd, PSM_CANCELTOCLOSE, 0, 0L)语句可以将IDCANCEL按钮变灰,IDOK按钮由"OK"变成"Close"(中文系统上“确定”变成“关闭”)*/

效果:

原始界面



去掉4个按钮后



发送PSM_CANCELTOCLOSE消息后

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: