C++ 如何将对话框项的样式更改为测试模式中显示的样式?

C++ 如何将对话框项的样式更改为测试模式中显示的样式?,c++,visual-studio-2008,visual-c++,windows-xp,C++,Visual Studio 2008,Visual C++,Windows Xp,当我在VisualStudio2008中使用CTRL+T快捷键测试对话框时,我可以看到带有整洁光滑边框的对话框项。但当我编译这个项目并通过程序本身启动它时,它看起来是“3d”风格的:每个对话框都有类似于旧Windows98风格的阴影 我想使用光滑的1像素边界,测试模式显示。如何在这两种样式之间启用/禁用 下面是这两种样式的示例,我想使用上面的样式: 您需要启用ComCtl32版本6,以便将正确的视觉样式应用于控件。Microsoft在此链接提供完整说明:步骤1将此代码添加到stdafx.h: #

当我在VisualStudio2008中使用CTRL+T快捷键测试对话框时,我可以看到带有整洁光滑边框的对话框项。但当我编译这个项目并通过程序本身启动它时,它看起来是“3d”风格的:每个对话框都有类似于旧Windows98风格的阴影

我想使用光滑的1像素边界,测试模式显示。如何在这两种样式之间启用/禁用

下面是这两种样式的示例,我想使用上面的样式:


您需要启用ComCtl32版本6,以便将正确的视觉样式应用于控件。Microsoft在此链接提供完整说明:

步骤1将此代码添加到stdafx.h:

#ifdef _UNICODE
#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
#endif
方法InitInstance()的步骤2:


我使用的是Visual Studio 2010,它可以正常工作。

我尝试使用这个#pragma方法,但它没有做任何事情,没有任何想法?@Rookie,这本身是不够的,您还必须在程序启动时调用
InitCommonControls
。我建议阅读整篇文章。我链接到ComCtl32.lib并调用InitCommonControls(),但没有什么不同。我不知道还能做什么。。。它说我不需要这个方法的清单,但它不起作用。@Rookie,我的错误-你必须调用InitCommonControlsEx,而不是InitCommonControls。我认为我不需要那个Ex版本,因为我不使用那些类。不管怎样,我试过了,但没能成功,只是崩溃了,不管我在性爱中做了什么。奇怪的是编译器抱怨我没有得到的未初始化变量。这是我的代码:
lpinitcommoncontrolsexa;a->dwSize=sizeof(INITCOMMONCONTROLSEX);a->dwICC=0xFFFFFFFF;性别(a);当它没有崩溃时,init func返回false。嗯,我让它使用它,但我必须删除
\ifdef\u UNICODE
。我不确定为什么会有这一行代码,但是没有它它它就可以工作。谢谢(我需要等待19个小时才能获得+50奖金。)之所以使用UNICODE,是因为新的(第6版)通用控件库只能使用UNICODE。没有ASCII版本的itif
WIN32\u LEAN\u,并且定义了
,并且commctrl不是预编译头的一部分,也没有在任何地方提到过,您还需要
\include
库的名称不同,即comctl32.lib
    BOOL Ctest_stylesApp::InitInstance()
{
    INITCOMMONCONTROLSEX InitCtrls;
    InitCtrls.dwSize = sizeof(InitCtrls);
    InitCtrls.dwICC = ICC_WIN95_CLASSES;
    InitCommonControlsEx(&InitCtrls);
}