- ベストアンサー
'int' から 'LPCSTR' に変換できません。
- 初心者の方がVC++.NET2003で子ダイアログにラジオボタンを配置し、OKボタンを押した時にラジオボタンの値をiniファイルに書き込もうとしているが、エラーが発生しています。
- エラーメッセージによると、WritePrivateProfileStringA' の引数の型が 'int' から 'LPCSTR' に変換できないようです。
- このエラーを解決するには、'LPCSTR' 型にラジオボタンの値を変換する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- SendMessage();の使い方
よろしくお願いします。 <環境> WIN98 VC++6.0 MFC SDIにてウィンドウをクリックすると、モードレスダイアログ1とモーダルダイア ログ2が開くようにしました。 void CMy222View::OnLButtonDown(UINT nFlags, CPoint point) { CDlg1 *dlg; dlg = new CDlg1; dlg->Create(IDD_DIALOG1); dlg->ShowWindow(SW_SHOW); CDlg2 dlg2; dlg2.DoModal(); CView::OnLButtonDown(nFlags, point); } ダイアログ2のボタン押し下げにてダイアログ1のボタン1を押し下げたいのですが 、どのようにすれば実現できるのでしょうか? void CDlg2::OnButton2() { SendMessage(); //■ここの書き方が分かりません CDialog::OnOK(); } 宜しくお願いいたします。
- ベストアンサー
- C・C++・C#
- ダイアログクラスへの値の受け渡し
VC++6.0 ダイアログベースです。 下記のように、親ダイアログクラスから、ボタンコントロールで2つの子ダイアログクラスを呼び出して いるのですが、自作で作った処理用のクラスを子ダイアログ2から呼び出す場合に 上手く値を渡すことが出来ません。 子ダイアログ2に設定値を送り、その送られてきた設定値を使って自作クラスに値を送ろうと考えてみたのですが、 Dialog2->DoModal(); でエラーとなります。 どの用にしたら、子ダイアログ2から自作関数を呼び出した時も、ダイアログ1で設定された値を使うことができるでしょうか? よろしくお願いします。 /**親ダイアログクラス***********************************************************:*/ //■ボタン1が押されたら子ダイアログ1を開く CDialog1 *Dialog1; Dialog1 = new CDialog1(); Dialog1->DoModal();//子ダイアログクラス1呼び出し //■ボタン2が押されたら子ダイアログ2を開く CDialog2 *Dialog2; if (Dialog1->flag == 1){ Dialog2 = new CDialog2(Dialog1->m_hoge1,Dialog1->m_hoge2,Dialog1->m_hoge3); else{ Dialog2 = new CDialog2(0,0,0);//設定値が読み込まれていなかったら初期値を送る } Dialog2->DoModal();//子ダイアログクラス2呼び出し //■ボタン3が押されたら自作クラスを呼び出します。 //自作クラスを呼び出します。 CJisaku *jisaku; jisaku = new CJisaku(); //自作クラスの関数呼び出し jisaku->ppfm(Dialog1->m_hoge1,Dialog1->m_hoge2,Dialog1->m_hoge3,); /**子ダイアログクラス1**********************************************************/ //自作クラスで扱う設定値を決めます public: int m_hoge1;//呼び出されたらint型の変数m_hoge1に値を入れる。 int m_hoge2;//呼び出されたらint型の変数m_hoge2に値を入れる。 int m_hoge3;//呼び出されたらint型の変数m_hoge3に値を入れる。 Cstring m_hogestring;//呼び出されたらCstring型の変数m_hogestringに値を入れる。 BOOL m_flag; //初期値 flag = false; //一度でも呼び出されたら flag = true; /**子ダイアログクラス2********************************************************/ //自作クラスを呼び出します。 //コンストラクタ Dialog2::Dialog2(int a,int b, int c){ m_a = a; m_b = b; m_c = c; } jisaku = new CJisaku(); jisaku->ppfm(m_a,m_b,m_c);//自作クラスの関数呼び出し /**自作クラス*******************************************************************/ void ppfm(int a,int b, int c) { //ここで子ダイアログクラス1で設定した値を使いたい。 }
- ベストアンサー
- C・C++・C#
- ラジオボタンの値の取得について(C++)
いつもお世話になっております。初めて投稿させていただきます。 VC++6.0を使い、プログラムを組んでいます。超初心者です。 レジストリから値を読み込み、ラジオボタンのチェックをどちらにつけるかを決め、OKボタンを押すとレジストリに書き込むという処理をしたいのですが、ラジオボタンがどちらについているかの処理方法がわかりません。(レジストリの読み書きに関しては何とかわかりました) 例えばラジオボタンが二つだけの時に int radio = CWnd::GetCheckedRadioButton(IDC_RADIO1, IDC_RADIO2); と書き、radioに値を入れて判別したいと思ったのですが、取得できる値が1020とかよくわからない値を取得します。 この場合、IDC_RADIO1やIDC_RADIO2にはあらかじめ0や1といった値を入れる事は出来ますか? それとも、使っている関数が間違っていますでしょうか、それとも根本的に何か間違っていますでしょうか… 質問が下手ですみませんが、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- MFCダイアログの終了判定
開発環境:VC++2008 MFCダイアログ プロジェクト作成名:test 簡単なMFCの処理内容を勉強しています。 画像のようなダイアログベースで処理を行っており、 処理の流れは以下です。 1. "参照"で実行ファイルを選択 2. "エディットコントロール"で読み込んだディレクトリの絶対パスを表示 3. "起動"で実行を行う。 上記のプログラムにINIでの保存/読み込みを追加し、(iniは本プログラムと同階層に) 毎回、参照から読み込まなくても、次回以降は自動で変数に読み込まれるようにしようと思ってます。 そこで分からないことが2つあります。 ・質問1: test.cppで閉じるボタンが押されたときに処理を行う方法 ・質問2: INIの同ディレクトリに保存をtestDlg.cpp側で行う方法 質問1補足: 以下のようなOK/キャンセル処理が最初からありますが、 これらのような形式でtest.cpp側で終了判定を行いたいです。 --------------------------------------- INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: ダイアログが <OK> で消された時のコードを // 記述してください。 } else if (nResponse == IDCANCEL) { // TODO: ダイアログが <キャンセル> で消された時のコードを // 記述してください。 } --------------------------------------- ですが、私のプログラムではOK/キャンセルは使っていないので 閉じるボタンを押したとき、上記のような処理をさせることはできないでしょうか? できるならば、そこにINIの保存処理を入れたいと思います。 質問2補足: test.cppのCtestApp::InitInstance()にて --------------------------------------- TCHAR path[_MAX_PATH+1]; GetModuleFileName( NULL, path, _MAX_PATH ); PathRenameExtension( path, TEXT(".ini") ); free((void*)m_pszProfileName); m_pszProfileName=_tcsdup(path); --------------------------------------- "本プログラムを実行したときと同じディレクトリにINIを保存する" ようにしているので testDlg.cppでボタンを押したときに保存する処理を行うと、 保存される場所がWINDOWSファイルの方に行ってしまうため、 どうしていいかわからない状況です。 初歩的な質問ですが、何卒宜しくお願いします。
- 締切済み
- C・C++・C#
- MFC ボタンのEnableについて
はじめまして。 質問させてください。 VC++ 2005 MFCで開発しております。 DLGにボタンを配置して ボタン押下後自身のEnableをきります。 するとタブがダイアログ自体も含め どこにも当たらずタブキーが効きません。 OnOk, OnCancelで処理させたいのですが 当然メッセージを取得できません。 ダイアログのアクティブを一度切り替えるとなおります。 解決方法としては ボタン押下でEnableをきった後 ダイアログにフォーカスを当てると正常に動きます。 This->SetForcus(); これはMFCの仕様なのでしょうか? ボタン押下後自身のEnableをきることはよく行う動きだと思いますが。 以上になります。 お詳しい方がおられましたらご教授お願い致します。
- 締切済み
- C・C++・C#
- モードレスダイアログのキー入力について
VC++6.0で親ダイアログで作成した子ダイアログをモードレスで表示しています。(ShowWindowで表示した後、子ダイアログが終了するまでループ) 両方のダイアログに、OKボタンとキャンセルボタンしかない時には、リターンキー・ESCキーを押せば子ダイアログが終了していました。(親ダイアログにフォーカスがあるときには親ダイアログが終了) ところが、子ダイアログが表示されている間、親ダイアログ上でプログレスバーを表示・更新ようにしたら、とたんにリターンキー・ESCキーが効かなくなり、マウスのクリックでしか終了することができなくなりました。 WEBで調べてPreTranslateMessageを追加して、この関数にブレイクポイントを設定しましたが、呼ばれている様子がありません。 子ダイアログをマウスのボタンクリックで終了させた後は、親ダイアログのPreTranslateMessageでイベントが取得できます。 何をどうしたらリターンキー・ESCキーのイベントが取得できるようになるのでしょうか?
- 締切済み
- C・C++・C#
- ダイアログからビュークラスのメンバ変数へ代入するには?
プログラミング初心者です. Visual C++.netを使っています. Viewクラスから,Domodal()にてあるダイアログを呼び出しました. ダイアログ上のあるボタンを押したら,Viewクラスのメンバ変数へ1を代入するという処理をしたいと考えています. ラジオボタンやエディタコントロールであれば,DDXを利用すればよいと思うのですが,単なるボタンの場合はどうすれば,呼び出し元のViewクラスの値を操作(この場合,代入)出来るのでしょうか?
- ベストアンサー
- C・C++・C#
- 閉じてしまったダイアログのエディットボックスへの書き込み禁止方法
VC++ 6.0 MFC ダイアログベースです。 メインダイアログ画面で、ボタンを押下した時に、別ダイアログ(子ダイアログ)が呼び出されて、 その子ダイアログ内では、ワーカースレッドを使用して処理を行い、 処理結果をエディットボックスに表示させています。 子ダイアログを閉じる時に、WaitForSingleObject を使って、スレッドを完全に終了させてからダイアログを閉じるように しているのですが、スレッドの処理が、エディットボックスに書き込む時に閉じてしまうと、 スレッドがそこで止まってしまいスレッドが終了しません。 このような場合どうしたら良いのでしょうか? ・閉じるボタンが押されたら、エディットボックスに書き込まないようにすれば良いと思い、 (フラグを立てて試したのですが、フラグチェック後に閉じるが押されることがあり失敗) // スレッドの開始 m_Thread = AfxBeginThread(ThreadFunc, this); // この時、子ダイアログを閉じてしまうと // INFINITEなので、ずっと止まってしまいます。 CString data = "処理結果"; case 0: m_M0edit.SetWindowText(data); break; case 1: m_M1edit.SetWindowText(data); break; case 2: m_M2edit.SetWindowText(data); break; ・ ・ ・ ・ // 子ダイアログを閉じる時に呼び出されます。 // スレッドでの処理が完全に終わるのを待ちます。 afx_msg void CSelecting_Dlg::OnClose() { DWORD dwRet dwRet = WaitForSingleObject(m_Thread->m_hThread, INFINITE); EndDialog(0); } /***************/ 失敗談 /***************/ // スレッドの開始 m_Thread = AfxBeginThread(ThreadFunc, this); // この時、子ダイアログを閉じてしまうと // INFINITEなので、ずっと止まってしまいます。 CString data = "処理結果"; if (m_openFlag == 1){ //フラグを見て書き込みするかチェックする。 switch (t){ case 0: m_M0edit.SetWindowText(data); break; case 1: m_M1edit.SetWindowText(data); break; case 2: m_M2edit.SetWindowText(data); break; ・ ・ ・ ・ } } // 子ダイアログを閉じる時に呼び出されます。 // スレッドでの処理が完全に終わるのを待ちます。 afx_msg void CSelecting_Dlg::OnClose() { DWORD dwRet m_openFlag = false; //閉じるボタンが押されたら フラグを降ろす。 dwRet = WaitForSingleObject(m_Thread->m_hThread, INFINITE); EndDialog(0); }
- ベストアンサー
- C・C++・C#
- Java-jspの画面入力値保持について
画面にテキスト、ラジオボタン、リストボックス とボタンがあります。 ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。 1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が 変わらないようにしたいのですが、 その場合、たとえば、入力、設定値をセッションになどに格納しておき jspの所で、セッションから値を設定すると言うような方法になるのでしょうか? 2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も 変えないようにしたいのですが、 これはどのように実現するのが、適切なのでしょうか? 以上、よろしくお願いします。
- ベストアンサー
- Java
- スタティックテキストが表示されない
親ダイアログのボタンが押された際、 親ダイアログのCWnd*を渡して、Topmost=TRUEの プロパティを持つ子ダイアログを モードレスで表示させるようにしました。 子ダイアログは、スタティックテキストと アニメーションコントロールのみを配置した ダイアログで、OnInitDialogにてaviファイルを ロード・再生しています。 スタティックテキストはリソースへの埋め込みです。 ボタン押下後、ダイアログを表示させる関数を呼び、 その後、一定時間Sleepをさせるようにしました。 (時間のかかる処理の代わりに) 現象としては、ボタン押下後、子ダイアログは 表示され、アニメーションも子ダイアログ表示後、 1~2秒ほどで再生されるのですが(このタイムラグも若干不満)、 スタティックテキストが、親側のSleepが終わるまで 表示されません。 OnInitDialogでスタティックテキストを再設定してやるように してもダメでした。 回避策はありますでしょうか?
- ベストアンサー
- C・C++・C#
お礼
iniファイルに書込みできました! ありがとうございます。 勉強になりました。
補足
iniファイルに書込みできました! ありがとうございます。 勉強になりました。