用vc写了个界面程序,发现vista系统下,当按下 ALT 键导致对话框窗口上的文字消失,这是什么原因呢?
在XP下是没有这个问题的,请帮忙看看。谢了! 对话框消息处理的部分代码:
case WM_ERASEBKGND: //重画窗口背景
BitBlt ((HDC) wParam, 0, 0, pDlgRecord->nWidth, pDlgRecord->nHeight, pDlgRecord->hCacheDc, 0, 0, SRCCOPY);
return TRUE;
break; case WM_CTLCOLORSTATIC: //静态本文背景透明
{//设置文本框的背景色
_TCHAR szClassName[MAX_PATH];
GetClassName((HWND) lParam, szClassName, MAX_PATH);
if (_tcscmp(szClassName, _TEXT("Edit")) == 0) {
SetBkColor((HDC) wParam, RGB(255, 255, 255));
if (GetDlgCtrlID((HWND) lParam) == IDC_EDIT_INSTALLDIR2) {
SetBkColor((HDC) wParam, RGB(235, 235, 235));
} return (LRESULT) GetStockObject(HOLLOW_BRUSH); }
SetBkMode((HDC)wParam, TRANSPARENT); if (GetDlgCtrlID((HWND) lParam) == IDC_STATIC_TITLE) {
SetTextColor((HDC) wParam, RGB(255, 255, 255));
} if (GetDlgCtrlID((HWND) lParam) == IDC_STATIC_STEP) {
SetTextColor((HDC) wParam, RGB(0x80, 0x80, 0x80));
} //根据STATIC位置画上对话框的背景
if (g_IsWin2k && _tcscmp(szClassName, _TEXT("Button")) == 0) {
LONG style = GetWindowLong((HWND) lParam, GWL_STYLE);
if ((style & 0xFL) != BS_OWNERDRAW) { return (LRESULT) GetStockObject(HOLLOW_BRUSH);
}
} {
RECT rect, rect2;
GetWindowRect((HWND) lParam, &rect);
GetWindowRect(pDlgRecord->hWnd, &rect2);
OffsetRect(&rect, -rect2.left, -rect2.top); BitBlt((HDC) wParam, 0, 0, rect.right - rect.left, rect.bottom - rect.top,
pDlgRecord->hCacheDc, rect.left, rect.top, SRCCOPY);
}
return (LRESULT) GetStockObject(HOLLOW_BRUSH);
}
break;
在XP下是没有这个问题的,请帮忙看看。谢了! 对话框消息处理的部分代码:
case WM_ERASEBKGND: //重画窗口背景
BitBlt ((HDC) wParam, 0, 0, pDlgRecord->nWidth, pDlgRecord->nHeight, pDlgRecord->hCacheDc, 0, 0, SRCCOPY);
return TRUE;
break; case WM_CTLCOLORSTATIC: //静态本文背景透明
{//设置文本框的背景色
_TCHAR szClassName[MAX_PATH];
GetClassName((HWND) lParam, szClassName, MAX_PATH);
if (_tcscmp(szClassName, _TEXT("Edit")) == 0) {
SetBkColor((HDC) wParam, RGB(255, 255, 255));
if (GetDlgCtrlID((HWND) lParam) == IDC_EDIT_INSTALLDIR2) {
SetBkColor((HDC) wParam, RGB(235, 235, 235));
} return (LRESULT) GetStockObject(HOLLOW_BRUSH); }
SetBkMode((HDC)wParam, TRANSPARENT); if (GetDlgCtrlID((HWND) lParam) == IDC_STATIC_TITLE) {
SetTextColor((HDC) wParam, RGB(255, 255, 255));
} if (GetDlgCtrlID((HWND) lParam) == IDC_STATIC_STEP) {
SetTextColor((HDC) wParam, RGB(0x80, 0x80, 0x80));
} //根据STATIC位置画上对话框的背景
if (g_IsWin2k && _tcscmp(szClassName, _TEXT("Button")) == 0) {
LONG style = GetWindowLong((HWND) lParam, GWL_STYLE);
if ((style & 0xFL) != BS_OWNERDRAW) { return (LRESULT) GetStockObject(HOLLOW_BRUSH);
}
} {
RECT rect, rect2;
GetWindowRect((HWND) lParam, &rect);
GetWindowRect(pDlgRecord->hWnd, &rect2);
OffsetRect(&rect, -rect2.left, -rect2.top); BitBlt((HDC) wParam, 0, 0, rect.right - rect.left, rect.bottom - rect.top,
pDlgRecord->hCacheDc, rect.left, rect.top, SRCCOPY);
}
return (LRESULT) GetStockObject(HOLLOW_BRUSH);
}
break;
解决方案 »
- asInvoker权限的程序怎么调用requireAdministrator的程序?
- 串口接收到数据缓存下来后,通过线程不断的更新界面。导致界面响应速度底下
- VC中如何让MSChart绘制的图形紧凑一些?
- MFC的问题,写文件遇到麻烦!!!
- 为什么不能调整切分窗口的大小?(最后10分了,555555)
- 请问怎样取得其他进程中CListCtrl中的每一行数据,我这边总是报告:内存地址无法writen?
- 请问如何改变原先的应用程序的名称?
- 怎么样在WINNT/2000/XP安全模式下替换Windows的登录为自己的登录DLL(在线等待)
- SQL数据表分区
- 基于单文档:如何一次打开多个位图文件
- (散分)用VC写一个获取天气信息的程序
- error C2143: syntax error : missing ';' before '<'
SetWindowText(hDlg, m_szCaption);
SetWindowText(GetDlgItem(hDlg, IDC_STATIC_MSG), m_szText);
来做的。