0

我编写了这段代码来在对话框中绘制一个简单的矩形,我还将 ON_WM_PAINT() 添加到我的消息映射中。但它没有在我的对话中显示任何内容!如果有人能说出我在代码中的错误,我真的很感激:

void Ctest4Dlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting
        // TODO: Add your message handler code here

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = 2;
        int y = 2;

        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);

        //I want to draw a rectangle 
        dc.Rectangle(10,10,50,50);
    }
    else
    {
        CDialogEx::OnPaint();
    }
}
4

2 回答 2

5

看起来您的绘图代码仅在窗口为标志性时运行?你为什么这样做?

else调用CDialogEx::OnPaint().

于 2011-07-09T05:40:42.060 回答
0

您的第一个也是最大的错误是尝试直接在对话框中绘图。虽然可以这样做,但这几乎总是一个坏主意。对话框通常应被视为控件的容器。

于 2011-07-09T05:38:56.800 回答