子ウィンドウについて – プログラミング – Home

通知
すべてクリア

[解決済] 子ウィンドウについて


SHO
 SHO
(@SHO)
ゲスト
結合: 17年前
投稿: 7
Topic starter  

VCを勉強中でダイアログベースのテストサンプルを作っています。
CustomListはCWndを継承したクラスです。

そこで、親ウィンドウが受けたOnPaintのメッセージを
子ウィンドウでも受け取るにはどうしたらいいのでしょうか?

BOOL CTestDlg::OnInitDialog()
{
  CDialog::OnInitDialog();
  
  // 子ウィドウの作成
  m_CustomWnd.Create(NULL, NULL, WS_CHILD, CRect(0, 0, 100, 100), this, 100);

  return TRUE;
}


引用未解決
トピックタグ
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

そんなことしなくても
子ウィンドウの領域に再描画が必要ならOnPaintが発生するから必要ないと思うんだけど。

CTestDlg::OnPaint内で
m_CustomWnd.Invalidate();
m_CustomWnd.UpdateWindow();

親ウィンドウの一部の描画のためのCTestDlg::OnPaintであっても
子ウィンドウの全体の描画をすることになるよ。

動作確認していないのでうまくいくかわかりません。


返信引用
SHO
 SHO
(@SHO)
ゲスト
結合: 17年前
投稿: 7
Topic starter  

CTestDlg::OnPaint内で
m_CustomWnd.Invalidate();
m_CustomWnd.UpdateWindow();

両方とも試して見ましたが特に飛んでくる様子はありません。。
CCustomWndに下記の3つを追加しただけなのですが
なにか間違えていますでしょうか?

void CCustomWnd::OnPaint()

BEGIN_MESSAGE_MAP(CCustomWnd, CWnd)
ON_WM_SIZE()
ON_WM_PAINT()
END_MESSAGE_MAP()

afx_msg void OnPaint();


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

ウィンドウスタイルにWS_VISIBLEがないな。
ほかに何が必要かはわからない。


返信引用
SHO
 SHO
(@SHO)
ゲスト
結合: 17年前
投稿: 7
Topic starter  

ありがとうございます。
WS_VISIBLEでOnPaintが呼ばれました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました