コンボボックスのInsertString関数はいつ呼び出せばいいのでしょうか。 – プログラミング – Home

コンボボックスのInsertStrin...
 
通知
すべてクリア

[解決済] コンボボックスのInsertString関数はいつ呼び出せばいいのでしょうか。


はまち
 はまち
(@はまち)
ゲスト
結合: 24年前
投稿: 146
Topic starter  

今、ツールバーのボタンを押すとコンボボックスを持っているダイアログを表示する、というよ
うなプログラムを作っているのですが、このとき、コンボボックスのリストボックスに文字列を
表示させる、InsertString関数はどの時点で呼び出せばいいのでしょうか。CMainFrameクラス
でツールバーのメッセージを受けるハンドラを追加して以下のようにしました。

void CMainFrame::OnAuto()
{
CAutoSimulationDialog cas;

cas.m_cParam.InsertString(-1, Test1);
     cas.m_cParam.InsertString(-1, Test2);
cas.m_cParam.InsertString(-1, Test3);

int iRet;
iRet = cas.DoModal();
}
ここで、m_cParamはClassWizardのDDXの設定で追加したメンバ変数で、カテゴリを「コントロ
ール」、変数のタイプを「CCombobox」と設定したものです。
プログラムを実行して目的のツールバーのボタンを押すと、Debug Assertion Failed!の表示
が出てきます。

void CMainFrame::OnAuto()
{
CAutoSimulationDialog cas;

//cas.m_cParam.InsertString(-1, Test1);
     //cas.m_cParam.InsertString(-1, Test2);
//cas.m_cParam.InsertString(-1, Test3);

int iRet;
iRet = cas.DoModal();
}

と、InsertStringをしないようにすると、リストボックスにはもちろん何も表示されませんが
エラー表示が出ず、ダイアログは表示されます。
 ここまでの段階で何か間違っているのでしょうか。みなさん、お忙しいとは思いますが、どん
なことでもいいので、なにかお気づきになった点があれば教えてください。よろしくお願いしま
す。

環境は、Win 98SE, VC++6.0です。
 


引用未解決
トピックタグ
TAD
 TAD
(@TAD)
ゲスト
結合: 23年前
投稿: 54
 

CAutoSimulationDialog の DoModal を呼び出すまでは、
ダイアログボックスのウィンドウそのものが生成されていないので、エラーになります。

CAutoSimulationDialog クラスの OnInitDialog に入れるのが普通です。
これは、ダイアログボックスとコントロールがすべて作られた後に呼び出されるハンドラです。
ここに、m_cParam.InsertString(-1, Test1); とすれば、文字列を追加できると思いま
す。


返信引用
はまち
 はまち
(@はまち)
ゲスト
結合: 24年前
投稿: 146
Topic starter  

TADさん、お返事ありがとうございました。TADさんの言うとうりやってみると、うまく行きま
した。過去ログなどでは多くの人が、OnInitDialogを使っていたので、僕もOnInitDialogを探
していたのですが、WM_INITDIALOGのメッセージから関数を追加するんだったんですね。てっき
り、OnInitDailogという関数があるのかと思って、Classwizardでメッセージを選ぶリストの
上のほうばかりを探していました。
 たすかりました。ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました