如何在标题栏上添加自定义按钮

 

http://www.uipower.com

概述:

       本文介绍如何在标题栏上添加自定义按钮。

 

纲要

引言

操作步骤

 

 

引言

在目前很多的软件中,需要在标题栏上添加用户自定义按钮,标题栏上的按钮给用户操作简单,界面人性化等特点,广受最终用户的欢迎!

Skin++正式版支持用户在标题栏上添加自定义按钮。可以添加任意多个,任意位置,任意形状的按钮,并正确响应各自的消息处理。具有充分的灵活性。[回到纲要]

 

操作步骤

1. 新建一个单文档SDI程序。

        

       工程我们命名为:TestTitleBtn

       2.拷贝Skin++ DLLLibH文件,具体请参考VC中如何使用Skin++

       3.皮肤的设计

          打开皮肤工程Royale.ssk,效果图如下所示:

             

             

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

 

             

       1ResourceID:为自定义系统按钮的ID,通过该ID来进行消息的传递,如果我们在这里填上1112,那么用户每次点击,按钮就会向所在的窗口发送SM_TITLELBUTTONUP消息,

WPARAM 为按钮的IDLPARAM为鼠标所在的位置。

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;

}

 

2OwnerFrameResID:为系统按钮所在窗体的资源IDResourceID)。窗体的资源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或不做设置,那么程序运行时,所有带标题栏的弹出窗体均会画上这个自定义按钮。

 

3Type 这是系统按钮的类型,如果要设置为自定义按钮,必须选择Custom

 

运行效果图:

 

       [回到纲要]

 

其他:

 Skin++ 高级应用首页  sppSetWindowResID

 

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