初歩的な質問ですいません
Windows XP VC++ 6.0 MFC
View.cppから、Main.cpp下の設定ダイアログPropsheetのPropPage1のListBoxの
CurSelを変更しようとしています。
void CView::OnSelchangeCombo4()
{
//コンボボックスの選択行Noを取得
CComboBox* Combo4 = (CComboBox*)GetDlgItem(IDC_COMBO4);
int nn = Combo4->GetCurSel();
CMainFrame* pMain = (CMainFrame*)GetParentFrame();
pMain->m_PropSheet.m_PropPage1.SetTurretCurSel( nn );
}
としたところ、m_PropSheetのハンドルが0で、Assretion Failedになってしまいます。
コード保管しているのに、どこがいけないんでしょうか?
最も可能性が高いのは、
「GetParentFrame()が真のメインフレームを戻していない」
だと考えられます。
CWinApp::GetMainWnd()を使ってメインフレームを取得して
みては、どうでしょう。
CMainFrame* pMain = (CMainFrame*)theApp.GetMainWnd();
とか。
仲澤@失業者 さま
ありがとうございます。
CApp* pApp = (CApp*)AfxGetApp();
CMainFrame* pMain = (CMainFrame*)pApp->GetMainWnd();
としてみましたが、同じ結果でした。
Debug Assertion Failed
File: wincore.cpp
Line: 3095
でした。
pMainには、ちゃんと値が入っていますが
pMain->m_PropSheet.m_PropPage1 のhWnd = 0x0000000 になっています。
m_PropPage1はハンドルではなかったようです
pMain->m_PropSheet.m_PropPage1.SetTurretCurSel( nn ); を
CPropsheetの関数を書いて
pMain->m_PropSheet.SetTurretCurSel( nn ); にしたらOKでした
お騒がせしました。
ツイート | ![]() |