このコードを使用してダイアログ内に単純な矩形を描画し、メッセージマップにON_WM_PAINT()を追加しました。それは私にダイアログに何も表示されませんでした!MFCで単純な矩形を描画するダイアログベースの
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:ダイアログに直接描画すると、描画を確実に行う上で問題が発生するようです。私はそれを見る唯一の人ではない。たとえば、Joseph Newcomerの[posts](http://groups.google.com/group/microsoft.public.vc.mfc/browse_frm/thread/88e61b2d5ae82e0a/ed8fe4997e4878e3?hl=en#ed8fe4997e4878e3)を参照してください主題 –
うーん...私は時々これをやっただけで何の問題もなかった。ジョセフにも具体的な例があるようには見えません。いずれにしても、描画が集中する状況では、自分の子ウィンドウに配置します。 –