如何在对话框上作图
使用SDK 编程
为何不能显示出来

解决方案 »

  1.   

    BOOL CALLBACK SetColorDlalogProc
    (                //设置颜色颜色对话框!
     HWND hDlg,
     UINT message,
     WPARAM wparam,
     LPARAM lparam
     ){
     HDC hdc;
     RECT Rect;
     PAINTSTRUCT ps;
     HBRUSH hbrush;
     switch(message){
     case WM_INITDIALOG:
     return 1;
     case WM_COMMAND:
     GetClientRect(hDlg,&Rect);
     SetDlgItemText(hDlg,IDC_SETCOLOR,SetColorText[CmdSetColor]);
     hdc=GetDC(hDlg);
     hbrush=CreateSolidBrush(RGB(0,225,0));
     SelectObject(hdc,hbrush);
     Rectangle(hdc,Rect.left,Rect.top,Rect.left+1000,Rect.top+1000);
     DeleteObject(hbrush);
     ReleaseDC(hDlg,hdc);
     switch(wparam){
     case IDC_OK:
     EndDialog(hDlg,TRUE);
     break;
     case IDC_CONCEL:
     EndDialog(hDlg,TRUE);
     break;
     default:return 0;
     }
     break;
     case WM_HSCROLL:
     switch(LOWORD(wparam)){
     }
     break;
     case WM_CLOSE:
     EndDialog(hDlg,TRUE);
     return 1;
     }
     return 0; 
    }
      

  2.   

    我说,你绘错地方了
    WM_PAINT中写绘制部分WM_COMMAND这里不负责刷新的
      

  3.   

    画图一般在WM_PAINT中。你写在WM_COMMAND中,倒不是不行,问题是,你那个对话框触发WM_COMMAND消息的就两个按钮吧,一个ID_OK,一个是ID_CANCEL,而且全是关闭对话框的,怎么可能会出来图呢?
      

  4.   

    响应WM_PAINT消息
    //头文件中
    afx_msg void OnPaint();
    //.cpp文件中
    BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
    ON_WM_PAINT()
    //...
    END_MESSAGE_MAP()void CMyDlg::OnPaint()
    {
       CPaintDC dc(this);
       
       dc.MoveTo(10,10);
       dc.LineTo(100,100);
    }
      

  5.   

    不好意思,没看到是SDK编程
    可以对话框的WndProc函数中处理WM_PAINT消息
    使用BeginPaint() EndPaint()等函数