нарисовать простой прямоугольник в MFC Dialog-Based - PullRequest
0 голосов
/ 09 июля 2011

Я написал этот код, чтобы нарисовать простой прямоугольник в диалоге, я также добавил 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();
    }
}

Ответы [ 2 ]

5 голосов
/ 09 июля 2011

Похоже, ваш код рисования работает только тогда, когда окно является иконическим? Почему ты это делаешь?

Поместите его в блок else после вызова CDialogEx::OnPaint().

0 голосов
/ 09 июля 2011

Ваша первая и самая большая ошибка - рисовать прямо в диалоге. Хотя возможно , это почти всегда плохая идея. Диалог обычно должен рассматриваться как контейнер для элементов управления.

...