【发布时间】:2011-01-13 17:42:56
【问题描述】:
对话框 proc 的返回类型为 BOOL 但我正在尝试做的事情
case WM_CTLCOLORSTATIC:
{
HBRUSH g_hbrBackground = CreateSolidBrush(RGB(237, 209, 238));
HDC hdcStatic = (HDC)wParam;
SetBkMode(hdcStatic, TRANSPARENT);
return (INT_PTR)g_hbrBackground;
}
上面的(INT_PTR)案例是从int_ptr到bool的性能警告转换,是怎么做的?
【问题讨论】:
-
你想做什么?您是要返回指针还是指针是否为空?
-
嗨,James,我正在尝试将静态控件的背景更改为透明,根据 WM_CTLCOLORSTATIC 的文档,我必须返回画笔句柄。
-
LRESULT和HBRUSH都和指针一样宽,所以你应该可以投射画笔。在 C++ 中,您应该更喜欢reinterpret_cast:return reinterpret_cast<LRESULT>(g_hbrBackground)。 -
“从 int_ptr 到 bool 的转换”对我来说听起来很可疑,包含该代码的函数是如何声明的?窗口过程的正确返回类型是
LRESULT,而不是BOOL。 -
真正的问题是您在 DialogBox() 调用中使用了强制转换。这让编译器关闭了,但让你一筹莫展。