我在WM_DRAWITEM中写一个函数,用一个循环,获取按钮的句柄,用
hDC = BeginPaint( g_Button_hWnd[i], &ps );
hDCMem = CreateCompatibleDC( hDC );
SelectObject( hDCMem, g_hWnd_Bitmap_White );
BitBlt( hDC, 1, 1, 28, 28, hDCMem, 0, 0, SRCCOPY );
DeleteDC( hDCMem );
EndPaint( g_Button_hWnd[i], &ps );来画按钮。
并且建立了3个按钮。可是在程序启动时,第1个按钮并没有画出,这是为什么?
无论几个按钮,总是第一个没法画出,这是怎么回事?

解决方案 »

  1.   

    调试N次,全都有效。
    hDC和hDCMem每次都不一样,这怎么看
      

  2.   

    WM_DRAWITEM 是哪个 button 的?怎么这样调用?
      

  3.   

    WM_DRAWITEM还分Button?
    只要有WM_DRAWITEM消息,就调用那个函数,不就把所有按钮都用位图重画了一遍?
      

  4.   

    为什么非要用BeginPaint,用GetDC试过没有?
    MSDN:
    An application should not call BeginPaint except in response to a WM_PAINT message. Each call to BeginPaint must have a corresponding call to the EndPaint function.
      

  5.   

    重载CButton类的ondrawitem
    很奇怪lz为什么这么做