|
如何在标题栏上添加自定义按钮 |
本文介绍如何在标题栏上添加自定义按钮。
纲要:
引言
在目前很多的软件中,需要在标题栏上添加用户自定义按钮,标题栏上的按钮给用户操作简单,界面人性化等特点,广受最终用户的欢迎!
Skin++正式版支持用户在标题栏上添加自定义按钮。可以添加任意多个,任意位置,任意形状的按钮,并正确响应各自的消息处理。具有充分的灵活性。[回到纲要]
1. 新建一个单文档SDI程序。

工程我们命名为:TestTitleBtn
2.拷贝Skin++ DLL、Lib、H文件,具体请参考《在VC中如何使用Skin++》。
3.皮肤的设计
打开皮肤工程Royale.ssk,效果图如下所示:

在SkinFrame对象(本工程的SkinFrame名为My Computer)中添加一个系统按钮SysButton.如下图所示:

1)ResourceID:为自定义系统按钮的ID,通过该ID来进行消息的传递,如果我们在这里填上1112,那么用户每次点击,按钮就会向所在的窗口发送SM_TITLELBUTTONUP消息,
WPARAM 为按钮的ID,LPARAM为鼠标所在的位置。
在TestTitleBtn工程的CMainFrame中添加
BEGIN_MESSAGE_MAP(CMainFrame,
CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
。。。。。。。
//}}AFX_MSG_MAP
ON_MESSAGE(SM_TITLELBUTTONUP,OnTitleLButtonUp)
END_MESSAGE_MAP()
LRESULT
CMainFrame::OnTitleLButtonUp(WPARAM wParam,LPARAM lParam)
{
switch((UINT)wParam)
{
case
11112:
{
AfxMessageBox(_T("11112"));
}
break;
case
11113:
{
AfxMessageBox(_T("11113"));
}
break;
default:
break;
}
return
0;
}
2)OwnerFrameResID:为系统按钮所在窗体的资源ID(ResourceID)。窗体的资源ID是通过在窗体的WM_NCCREATE中添加以下语句进行设置:
BOOL
CMainFrame::OnNcCreate(LPCREATESTRUCT lpCreateStruct)
{
if (!CFrameWnd::OnNcCreate(lpCreateStruct))
return
FALSE;
sppSetWindowResID(m_hWnd,112);//112位窗体的资源ID
return
TRUE;
}
如果在OwnerFrameResID中设置为程序的窗口ID(这里是112),那么程序运行时,这个自定义的按钮只对该窗体有效。其他弹出来的窗体就不会画上这个按钮。
如果在OwnerFrameResID中设置为0或不做设置,那么程序运行时,所有带标题栏的弹出窗体均会画上这个自定义按钮。
3)Type 这是系统按钮的类型,如果要设置为自定义按钮,必须选择Custom。
运行效果图:

Copyright@2004-2007 上海勇进软件有限公司,保留所有权利。
如果您对帮助系统有任何建议,可以直接发邮件到
Visual Studio,和Visual Studio logo 是微软公司在美国或在其他国家的注册商标。