C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: CPropertySheet::Create()でエラー


(過去ログ 71 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■41101 / inTopicNo.1)  CPropertySheet::Create()でエラー
  
□投稿者/ DD. (10回)-(2009/09/11(Fri) 22:49:26)

分類:[その他の言語] 

お世話になります。DD.です。

環境:XP, VC++2005(MFC)

MFCにて、CPropertySheetを派生させたクラス(CPropertyMenu)にて、
Create()メソッドを呼び出したところ「ウィンドウハンドルが無効です」となってしまい困っております。

処理的には、特にややこしいこともしておらず、ViewのOnInitialUpdate()で
CPropertyMenuをnewでインスタンス化し、その直後にCreate()メソッドをCallしているだけです。

以下にコードを抜粋します。(プロジェクトを作成したばかりで他に自動作成から追記したコードは、ほぼありません。)

class CPropertyMenu : public CPropertySheet
-----------------------------------------------
↓ViewのOnInitialUpdate()メソッド
CWnd* pWnd = AfxGetMainWnd();
CString strErrTitle, strErrMsg;
CPropertyMenu* pPropMenu = new CPropertyMenu( "PropertyMenu" );
if ( !pPropMenu ) {
	strErrTitle.LoadStringW( 101 );
	strErrMsg.LoadStringW( 102 );
	pWnd->MessageBox( strErrMsg, strErrTitle );
	return;
}
if ( !pPropMenu->Create( pWnd, WS_CHILD | WS_VISIBLE ) ) { // ←ここでエラー
	HLOCAL hLocal = NULL;
	::FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, GetLastError(), MAKELANGID( LANG_NEUTRAL, SUBLANG_NEUTRAL ), (PTSTR)&hLocal, 0, NULL );
	strErrTitle.LoadStringW( 101 );
	pWnd->MessageBox( (PCTSTR)LocalLock( hLocal ), strErrTitle ); // ←ウィンドウハンドルが無効です
	LocalFree( hLocal );
	return;
}

原因がわかる方、問題点をご教授頂ければと思います。

引用返信 編集キー/
■41188 / inTopicNo.2)  Re[1]: CPropertySheet::Create()でエラー
□投稿者/ Atsushi777 (1回)-(2009/09/14(Mon) 23:40:46)
もしかして、

> CPropertyMenu* pPropMenu = new CPropertyMenu( "PropertyMenu" );
> if ( !pPropMenu ) {
> strErrTitle.LoadStringW( 101 );
> strErrMsg.LoadStringW( 102 );
> pWnd->MessageBox( strErrMsg, strErrTitle );
> return;
> }
> if ( !pPropMenu->Create( pWnd, WS_CHILD | WS_VISIBLE ) ) { // ←ここでエラー

プロパティページを1ページも追加していないから、
ということではないかという気がしますが、
そんなことはないでしょうか?
引用返信 編集キー/
■41229 / inTopicNo.3)  Re[2]: CPropertySheet::Create()でエラー
□投稿者/ DD. (12回)-(2009/09/15(Tue) 20:17:31)
Atsushi777 さん、返信有難う御座います。

> プロパティページを1ページも追加していないから、
> ということではないかという気がしますが、
> そんなことはないでしょうか?
ビンゴでした。。。
ページの追加をOnCreate()で行っていたのですが、
コンストラクタに処理を移動することで無事に動きました。

ありがとうございます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -