void CHogeDoc::changed() { ...(処理)... UpdateAllViews(NULL); }が別のスレッドから呼び出されると、CHandleMap が参照できず Assertion failed する。
UpdateAllViews を SendMessage を使って呼び出したいのだが、どうすればいいのか?
CWnd::SendMessage を使うのがいい。
CHogeView にメッセージを登録して、そこから update させる。回りくどい。
ユーザー定義メッセージは手動で登録する。
#define WM_USER_ONCHANGED (WM_USER + 1) Header: class CHogeView { ... afx_msg LRESULT onChanged(WPARAM wParam, LPARAM lParam); } Source: IMPLEMENT_DYNCREATE(CHogeView, CView) BEGIN_MESSAGE_MAP(CHogeView, CView) ON_MESSAGE(WM_USER_ONCHANGED, &CHogeView::onChanged) // ON_COMMAND ではない END_MESSAGE_MAP() ... LRESULT CHogeView::onChanged(WPARAM wParam, LPARAM lParam) { InvalidateRect(NULL); }