お世話になっています。dtです。
MainFrame.cppにダイアログバーを作成しています。
このバーのあるボタンをクリックすると、Viewクラスに再描画するということですが、
MainFrame.cpp
void CMainFrame::OnButton1()
{
C**Doc * pS01Doc = (C**Doc *)GetActiveView();
if( pS01Doc ){
BOOL m_Image_flag2=TRUE;
pS01Doc->SetmRster_Flag(m_Image_flag2);
}
}
C**Doc.h
void SetmRster_Flag(BOOL n_mDraw_bmpFlag) {mRster_falg = n_mDraw_bmpFlag;}
BOOL GetmRster_Flag(){ return( mRster_falg);};
protected:
BOOL mRster_falg;
C**View.cpp
// CRasterEngineSampleView クラスの描画
void C**View::OnDraw(CDC* pDC)
{
n_mDraw_bmpFlag =pDoc->GetmRster_Flag();
...
}
問題のは、
OnButton1を押すと,
mRster_falg =TRUE;になっていますが、
でも、
n_mDraw_bmpFlag =pDoc->GetmRster_Flag();
から確認しています、
n_mDraw_bmpFlag=FALSE;になっています、変わっていません。
同じことで、自作のクラスから
SetmRster_Flag(m_Image_flag2);を使っていますが、正常に変っています。
一体どういうことでしょうか。
よろしくお願いします.
> C**Doc * pS01Doc = (C**Doc *)GetActiveView();
ViewをDocumentにキャストしてちゃんと動くとは思えないのですけど。
> C**Doc * pS01Doc = (C**Doc *)GetActiveView();
このサイトのTipsより
■ ドキュメントクラスを使う
http://rararahp.cool.ne.jp/vc/vctips/otherclass.htm#doc
επιστημη さん、Blueさん:
ご返事ありがとう。
C**Doc * pS01Doc = (C**Doc *)GetActiveDocument();
で、正常に動きました。
ありがとうございました。