Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 矢量中的按钮不响应自定义图形_C++_Winapi_Vector_Hwnd - Fatal编程技术网

C++ 矢量中的按钮不响应自定义图形

C++ 矢量中的按钮不响应自定义图形,c++,winapi,vector,hwnd,C++,Winapi,Vector,Hwnd,我有一个Win32程序,其中有一个向量,其中包含一些我想自定义绘制的按钮的HWND。我可以画它们,但我想做的只是改变背景颜色,所以似乎没有必要这样做。但是,它们似乎不会因自定义绘制而改变。他们看起来一样 我创建如下按钮: #define ID_BUTTON1 40000 std::vector<HWND> ButtonsVector; for (int i = 0, i > NumButtons, i++) { ButtonsVector.push_back(Cre

我有一个Win32程序,其中有一个向量,其中包含一些我想自定义绘制的按钮的
HWND
。我可以画它们,但我想做的只是改变背景颜色,所以似乎没有必要这样做。但是,它们似乎不会因自定义绘制而改变。他们看起来一样

我创建如下按钮:

#define ID_BUTTON1 40000

std::vector<HWND> ButtonsVector;

for (int i = 0, i > NumButtons, i++) {
    ButtonsVector.push_back(CreateWindowEx(
                NULL,
                L"BUTTON",  // Predefined class; Unicode assumed 
                L"X",      // Button text 
                WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,  // Styles 
                x,         // x position 
                y,         // y position (substitute some x and y values for these) 
                20,        // Button width
                20,        // Button height
                hWnd,     // Parent window 
                (HMENU)ID_BUTTON1 + i,       // Unique button ID
                (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
                NULL));
}

我需要添加以下行:

#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version = '6.0.0.0' processorArchitecture = '*' publicKeyToken = '6595b64144ccf1df' language = '*'\"")

这确保使用的是ComCtrl32.dll版本6,允许自定义按钮控件的绘图。但是,您必须注意的一点是,您的应用程序针对的是哪个版本的Windows,因为早于XP的版本不包括此版本的dll。

是吗?这也在以下内容中说明:“若要使用此通知代码,必须提供指定Comclt32.dll版本6.0的清单。有关清单的更多信息,请参阅。“谢谢!我只需要添加一个预处理器指令,它就成功了!如果您能将此作为答案发布,以便我可以接受,我将不胜感激。您可以展示您发现的对您有效的内容。好的,我会这样做。”。
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version = '6.0.0.0' processorArchitecture = '*' publicKeyToken = '6595b64144ccf1df' language = '*'\"")