我写了这段代码在对话框中绘制一个简单的矩形,我还在我的消息映射中添加了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();
}
}
答案 0 :(得分:5)
看起来你的油漆代码只在窗口是标志性的时候运行?你为什么这样做?
在致电else
之后,将其放入CDialogEx::OnPaint()
区块。
答案 1 :(得分:0)
你的第一个也是最大的错误就是试图直接在对话框中画画。虽然 可能会这样做,但这几乎总是一个坏主意。通常应将对话框视为控件的容器。