ダイアログに「ピクチャーコントロール」を追加して,それの再描画.
以前よくやっていた方法.
void CFOutLineDlg::OnHeight()
{
if (m_CountSpin.m_hWnd == NULL) { return ; }
UpdateData(TRUE) ;
InvalidateRect(NULL) ;
}
これだと描画対象以外のコントロールも再描画するのでちらついてしまう.
一度 ShowWindow で SW_HIDE して SW_SHOW することで,対象がコントロールだけになる.
void CFOutLineDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (m_CountSpin.m_hWnd == NULL) { return ; }
::FitWindow(this,&m_Image,5,TRUE,FALSE) ;
m_Image.ShowWindow(SW_HIDE) ;
m_Image.ShowWindow(SW_SHOW) ;
}
[…] MFC ダイアログ exe で GDI などでの描画を行うときは,通常「Picture Control」を使用する. メンバ変数として CStatic を割り当てて,その変数(ウィンドウ)に対して描画する. CWnd::GetDlgItem や ::GetDlgItem でも良い. […]