Я написал этот код, чтобы нарисовать простой прямоугольник в диалоговом окне, а также добавил ON_WM_PAINT() к моей карте сообщений. но он ничего не показывал по диалогу со мной! Я очень признателен, если кто-то может сказать, мои ошибки в коде:нарисовать простой прямоугольник в MFC Dialog-based
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();
}
}
Полезность диалога основана прежде всего на его способности содержать элементы управления. Однако нет никакой причины, почему это плохая идея рисовать прямо на нем. Если это то, что нужно, какая проблема это вызывает? –
@Jonathon: При рисовании непосредственно в диалоговом окне возникают проблемы с выполнением чертежа. Я тоже не единственный, кто это видел. Например, см. Несколько [сообщений] (http://groups.google.com/group/microsoft.public.vc.mfc/browse_frm/thread/88e61b2d5ae82e0a/ed8fe4997e4878e3?hl=ru#ed8fe4997e4878e3) Джозефа Ньюком на том же предмет. –
Хм ... Я делал это время от времени, и у меня не было никаких проблем. Не похоже, чтобы у Джозефа были какие-то конкретные примеры. Во всяком случае, для более интенсивных ситуаций, связанных с рисованием, я бы поставил его в свое дочернее окно. –