C++按钮样式 20
上图这个是系统中默认的按钮,很美观这个是用C++编译程序后的按钮,怎样使它变成默认系统的按钮??就是RC文件中对话框的按钮...
上图这个是系统中默认的按钮,很美观
这个是用C++编译程序后的按钮,怎样使它变成默认系统的按钮??
就是RC文件中对话框的按钮 展开
这个是用C++编译程序后的按钮,怎样使它变成默认系统的按钮??
就是RC文件中对话框的按钮 展开
3个回答
展开全部
恩,如果楼主是想要的Win.XP或者Win.7风格的按钮的话,需要做其它的处理才可以的。
一个Win32程序默认的设定是在运行时使用最老的,就是Win.97或者Win.03版本的按钮风格。这个不是代码本身的关系,而是应用程序在生成的时候指定要链接的控件库(ComCtl32.dll)是老版本的。
要想改变这种行为,只需要指定在运行时使用较新的控件库。
最简单的办法是在任意代码,通常是预编译的头文件(一般是stdafx.h)里加上这一段
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
其中 ,_M_IX86指的是32位目标平台,_M_X64指的是64位目标平台。
如果楼主想了解更多,自己搜索“清单文件”可以了解更多,以及了解更多解决这个问题的方法。
当然了,如果是MFC甚至是C#项目,它们默认就是最新风格的控件库,一般不需要做额外的处理。好吧,其实MFC是包含了上述代码的。
希望这个可以帮到被这个问题困惑的人们。
谢谢!
一个Win32程序默认的设定是在运行时使用最老的,就是Win.97或者Win.03版本的按钮风格。这个不是代码本身的关系,而是应用程序在生成的时候指定要链接的控件库(ComCtl32.dll)是老版本的。
要想改变这种行为,只需要指定在运行时使用较新的控件库。
最简单的办法是在任意代码,通常是预编译的头文件(一般是stdafx.h)里加上这一段
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
其中 ,_M_IX86指的是32位目标平台,_M_X64指的是64位目标平台。
如果楼主想了解更多,自己搜索“清单文件”可以了解更多,以及了解更多解决这个问题的方法。
当然了,如果是MFC甚至是C#项目,它们默认就是最新风格的控件库,一般不需要做额外的处理。好吧,其实MFC是包含了上述代码的。
希望这个可以帮到被这个问题困惑的人们。
谢谢!
2012-11-11
展开全部
1.如果你确定是系统默认的按钮的话。可以使用API编程,通过调用API创建系统自带的控件。
CButton就只有如下的风格。你可以查查MSDN的Button Styles (Windows)就好了。
BS_3STATE,BS_AUTO3STATE,BS_AUTOCHECKBOXBS_AUTORADIOBUTTON,BS_CHECKBOX,BS_DEFPUSHBUTTON,BS_GROUPBOX,BS_LEFTTEXT,BS_OWNERDRAW,BS_PUSHBUTTON,BS_RADIOBUTTON,BS_USERBUTTON,BS_BITMAP,BS_BOTTOM,BS_CENTER,BS_ICON,BS_FLAT,BS_LEFT,BS_MULTILINE,BS_NOTIFY,BS_PUSHLIKE,BS_RIGHT,BS_RIGHTBUTTON,BS_TEXT,BS_TOP,BS_VCENTER,BS_SPLITBUTTON,BS_DEFSPLITBUTTON,BS_COMMANDLINK,
如果上述不能解决问题,建议导入windows32\comctl32.dll使用系统自带的按钮控件。
2.如果是系统美化,资源修改,外壳的话,那么只能通过使用其他UI库来改变外观。
推荐BCG,Qt,wtl,GuiToolkit,wxwidgets,Ultimate++.Adobe Source Library,skin++等等都可以(这些可以用百度搜索下载,就不贴地址了)。
CButton就只有如下的风格。你可以查查MSDN的Button Styles (Windows)就好了。
BS_3STATE,BS_AUTO3STATE,BS_AUTOCHECKBOXBS_AUTORADIOBUTTON,BS_CHECKBOX,BS_DEFPUSHBUTTON,BS_GROUPBOX,BS_LEFTTEXT,BS_OWNERDRAW,BS_PUSHBUTTON,BS_RADIOBUTTON,BS_USERBUTTON,BS_BITMAP,BS_BOTTOM,BS_CENTER,BS_ICON,BS_FLAT,BS_LEFT,BS_MULTILINE,BS_NOTIFY,BS_PUSHLIKE,BS_RIGHT,BS_RIGHTBUTTON,BS_TEXT,BS_TOP,BS_VCENTER,BS_SPLITBUTTON,BS_DEFSPLITBUTTON,BS_COMMANDLINK,
如果上述不能解决问题,建议导入windows32\comctl32.dll使用系统自带的按钮控件。
2.如果是系统美化,资源修改,外壳的话,那么只能通过使用其他UI库来改变外观。
推荐BCG,Qt,wtl,GuiToolkit,wxwidgets,Ultimate++.Adobe Source Library,skin++等等都可以(这些可以用百度搜索下载,就不贴地址了)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个需要重载CButton类,网上有很多实现。
http://baike.baidu.com/view/1579181.htm
http://baike.baidu.com/view/1579181.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询