case WM_CTLCOLORDLG:
        {
         HDC hdc=(HDC)wParam;
         HWND hwnd=(HWND)lParam;
        }响应在这个里面的似乎不会,但是在其他里面响应的重绘后就消失了(例如WM_HOTKEY或者WM_COMMAND时TextOut),请问有什么解决办法么

解决方案 »

  1.   

    重绘的时候也 TextOut一下 或者使 TextOut区域有效
      

  2.   

    主要是我切换窗口就没了,这个很讨厌,
    怎么使TextOut区域有效呢?
      

  3.   

    为什么不处理WM_PAINT消息呢?
      

  4.   

    因为麻烦,我用的是DialogBox,并且我不想在WM_PAINT里重绘,
      

  5.   

    切换窗口没 是应为 Window给你发送了一个 WM_PAINT消息让你重绘
    你可以建立一个静态窗口,当静态窗口接受到WM_PAINT的时候 重新TextOut
      

  6.   

    你需要处理WM_PAINT消息,并使用BeginPaint返回的HDC来TextOut。
      

  7.   

    TextOut应当是作为重绘的一部分。
      

  8.   

    DialogBox 中有个回调函数 在里面的WM_PAINT在textout一下
      

  9.   

    大家没明白我说的,我不明白的是WM_CTLCOLORDLG里为什么不重绘
      

  10.   

    该WM_CTLCOLORDLG消息被发送到一个对话框之前,系统绘制对话框。 
    通过响应此消息,该对话框可以设置其文本和背景颜色使用指定的显示设备上下文句柄。窗口在刷新的时候,这对话框也重绘了。
    在对话框接到这个消息,系统然后重新绘制对话框。
    这里的设备上下文句柄依然有效,那么其上的文本就会一直显示,
    就像你设置了背景颜色,即使刷新也会一直显示是一样的
      

  11.   

    重绘TextOut的内容,一般的你只要变换视图和窗口,都必然引起重绘,所以在切换后,你必须在原位置再重新显示TextOut的内容