初めて書き込みさせていただきます。
よろしくお願いいたします。
VC初心者です。質問の意味がわからなければ、
ご指摘の程よろしくお願いいたします。
動作環境:WindowsXP上でVC++6.0
①ダイアログベースで、ワークスペースの作成を行い、
その後、新しくダイアログ((仮)IDD_IMAGE_DIALOG)を挿入します。
②そうすると、あたらしく(仮)ImageViewクラスが作成されているので
そのクラス内の、コンストラクタで、
//------------------------------------------------------------
// タブ 初期化処理
//------------------------------------------------------------
TC_ITEM tc0;
tc0.mask = TCIF_TEXT ;
tc0.pszText ="test";
tc0.lParam=0;
m_tab.InsertItem(0,&tc0);
と記述。
③その後、実行してみると必ず
m_tab.InsertItem(0,&tc0);でエラーになってしまう。
エラー内容です。
File: afxcmn.inl
Line: 536
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
すいません。
本と同じように、実装していると思うのですが、
関数でエラーがでてしまうと
根本的に考え方がまちがっているのか
わかりません。
なにかご助言等ございましたら
よろしくおねがいします。
で、肝心の afxcmn.inlの536行目 にはどんなコードが書かれてましたか?
afxcmn.inlの536行目のコードです。
_AFXCMN_INLINE BOOL CTabCtrl::InsertItem(int nItem, TCITEM* pTabCtrlItem)
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem); }
これから何を読み取ればいいは、わかりません。
ASSERT(::IsWindow(m_hWnd))
これにひっかかるってことは、まだWindow(TAB-controll)が生成
されていないのにInserItemしてるってことですね。
コンストラクタの中でやっても早すぎ。
OnInitDialogの末尾あたりでやってみて。
επιστημη 様
OnInitDialogに処理を入れたところ
正常に動作しました。
ありがとうございました。
ツイート | ![]() |