我目前难以理解的问题是,在“WM_CTLCOLORSTATIC”处理期间,我似乎无法为“PictureBox”控件的背景着色。我不知道为什么,但是,当我尝试处理WM_CTLCOLORSTATIC时,我收到系统错误消息“Access is Denied”。
我的代码如下:
DWORD dwLastError;
TCHAR lpBuffer[256];
switch(msg)
{
[...]
case WM_CTLCOLORSTATIC:
if(dwLastError != 0) // Don't want to see a "operation done successfully" error ;-)
::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, // It´s a system error
NULL, // No string to be formatted needed
dwLastError, // Hey Windows: Please explain this error!
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), // Do it in the standard language
lpBuffer, // Put the message here
lpBuffer -1, // Number of bytes to store the message
NULL);
[...]
}
甚至没有任何“WM_CTLCOLORSTATIC”,我收到系统错误“Access is Denied”作为回应。
我不知道造成这种情况的原因。
答案 0 :(得分:1)
这是错误:
lpBuffer -1,
将其更改为sizeof(lpBuffer)/sizeof(TCHAR) - 1