• ベストアンサー

MFC

Get((CButton *) GetDlgITem(IDOK)) と書かれていたものを 引数の所をメンバ変数を追加してm_okにし Get(m_ok)にすると1番目の引数を class CButtonからclass CWnd *に変換できませんとでます。 どのように修正すればいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんばんは。  Get(&m_ok);  で出来ませんか。

rooding
質問者

補足

返事遅くなりました。実は自己解決できたのですっかり忘れていました。 返信ありがとうございました。

関連するQ&A

  • MFCのエディットボックスの値をスピンボタン

    エディットボックスの値をスピンボタンの初期値にしたく、 下記コーディングにしたのですが CString Item; m_Spin->SetPos(((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(Item)); SetPos' : 1 番目の引数を 'void' から 'int' に変換できません。 とのエラーになります。 どのように変更したらよいかお教えください。

  • オーバーライドとオーバーロードについて

    1.CTestDlgクラスを作成 class CTestDlg : public CDialog { // コンストラクション public: BOOL Create(CWnd *pWnd); CWnd * m_pParent; CTestDlg(CWnd* pParent = NULL); // 標準のコンストラクタ・ ・ 2.メンバ関数の定義 BOOL CTestDlg::Create(CWnd *pWnd) { m_pParent = pWnd; BOOL bret = CDialog::Create( CTestDlg::IDD, m_pParent); if( bret == TRUE) { this->ShowWindow( SW_SHOW); } return bret; 以上のような場合において、 1.Create(CWnd *pWnd)は、引数が異なるため virtual BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); をオーバーライドしたとは言わず、オーバーロードしたということで良いのでしょうか? 2.オーバーロードしたということであれば、 Create(CWnd *pWnd)と virtual BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); の両方の関数が使えると思っていたのですが、後者方は引数が異なるとエラーが出て使えませんでした。 どうしてなのでしょうか? 以上、2点についてご教授ください。

  • CWndのメンバ変数m_hWndへの値の代入はいつ行われる?

    CWndにはメンバ変数m_hWndが有りますが、このm_hWndに値が代入されるのは、いつ、どのコードで実施されるのでしょうか? お分かりの方よろしくお願いいたします。

  • 【設計思想の質問】staticメソッド、メンバ変数

    【設計思想的な質問】 自分は、結合が弱いソースを好んでおり、 以下の例で言えば、後者のようにするのですが、 このようは書き方は良くないのでしょうか? 新しい現場で、後者の方の書き方をしたら、 「えっ、なんでメンバー変数で宣言してんの? なんで引数で渡してんの?馬鹿じゃないの?」 と、結構、傷つく言葉を受けました。 それはそうとして、 自分としては、「なぜ、やってはいけないのか?」 「自分の設計思想は、設計の方向性としてアリなのか?」などを知りたく、質問させて頂きました。 ご意見、ご鞭撻を宜しくお願い致します。 //----------------------------------------------------------- ★前提1:末端の派生クラスで、このクラスを継承することはない。 ★前提2:提供する処理は様々な処理で使われるユーティリティ機能 ◆案1 class 複雑なクラス //メンバ変数  変数1  変数2  (中略)  変数100 //メソッド private  long 複雑な処理 (void)      (略:色んなメンバー変数が登場するが、       どのメンバと、どのメンバが登場するかは、ソースを追いかけて確認する)  long 自由なタイミングで、色んなメンバ変数の値を書き換えてしまうメソッド (void)       (※上述の「複雑な処理」に登場する変数の取りうる値がフリーダムになる) となるよりも、 //----------------------------------------------------------- ◆案2  static long 複雑な処理 (必要な引数1、必要な引数2、必要な引数3)    (略:登場するINPUT、OUTPUTは、引数に列挙されているものだけ。)  static long 複雑な処理 (必要な引数97、必要な引数98、必要な引数99)    (略:登場するINPUT、OUTPUTは、引数に列挙されているものだけ。)  ※渡す値は、呼び元が意識するため、メンバ変数がどういう状況になっているかは、   メソッドの利用者が把握している。(タイミングも、取りうる値も、認識しやすい) の方が良いという考えなのです。 メンバ変数で書けば、確かに、宣言部、定義部のコーディングで引数のことを書かなくてよいので楽でしょうし、 インタフェースの検討不足で手戻りがあっても、引数の増減で、修正が不要ですし、楽だと思います。 しかし、 「どこからでもアクセスできる変数ばかり」だと、処理の認識も困難だし、バグの温床にもなってしまうことから、私は後者にも、優れている部分はあると考えているのです。 .

  • 例外処理(初回)についてのご質問

    プログラムを実行させた時、下記の様なメッセージが出力されたあとに、特定の場所でエラーが出てしまいます。 色々と試して見たのですが、解決出来ずに困っております。何方かどの辺を調べれば良いか等のアドバイスをお願い致します。 <エラーメッセージ> "例外処理 (初回) は XXXX.exe (MFC42D.DLL) にあります: 0xC0000005: Access Violation。" <停止場所> CWnd* CWnd::GetDlgItem(int nID) const { ここです→ASSERT(::IsWindow(m_hWnd)); if (m_pCtrlCont == NULL) return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID)); else return m_pCtrlCont->GetDlgItem(nID); } <エラーが発生するプログラム> BOOL CComProgramDlg::BinarySend(BYTE SendData[], unsigned long SendLength) { int Ret; unsigned long Len; ここら辺です→CStatic* pStic1 = (CStatic*)GetDlgItem(IDC_MSG_STATIC); Ret = WriteFile(m_hComm, &SendData[0], SendLength, &Len, NULL); if(!Ret)  return(FALSE); if(SendLength > Len)  return(FALSE); pStic1 -> SetWindowText("データを送信しました。"); return(TRUE); } 上記はデータシリアル通信の送信用で10回程度、このメンバ関数を通した時に急に発生します。 よろしくお願いいたします。

  • 【PHP】クラス と 関数 の違い

    class と function って具体的にはどうちがうのでしょうか。 class のメンバ変数は、 function でいうと 引数みたいな感じだし メンバ関数(メソッド?)も、function でいうと 実際の処理みたいな印象をうけます。 コンストラクターというのも、絶対的な処理 みたいな感じですが 何に使うのかよく分かりません。 class では、CSSのカスケードみたいに処理を別のclassに引き継ぎできるみたいですが、 他にどんな違いがあるのでしょうか。

    • ベストアンサー
    • PHP
  • 参照の初期化?~int& alias2 = get() + alias1;分かりません

    <c++です>こんばんは、宜しくお願い致します。 > class CSample > { > public: > CSample(){ m_num = 123; } // コンストラクタ > int& get(){ return m_num; } // メンバ変数を参照戻し > private: > int m_num; > }; >(1) int& alias1 = get(); >(2) alias1 *= 2; >(3) int& alias2 = get() + alias1; // このようにブロックの途中で宣 >言できるとできます。 あるサイトで↑のようなサンプルプログラムがあるのですが(1)は分かるのですが(参照の初期化をしている)、(3)の動作が分かりません。参照の初期化みたいですが、参照型の戻り値get()に変数alias1を足しているのですがそれを別の参照alias2の初期化みたいになっており理解できません。教えてください。

  • クラスがメンバーとしてクラスを持つ時の宣言について

    自作クラスMainClassがMyClassというクラスをメンバー変数として持つ場合、宣言時に引数をいくつか持つコンストラクタを呼び出そうとすると構文エラーとなります。 class MyClass { public: MyClass(int, int); } class MainClass { private: MyClass myclass(10,10); } このような宣言はできないのでしょうか。 引数なしのコンストラクタは呼び出せているようです。

  • 構造体を引数とする、クラス間のデータの受渡し方法について

    現在、C++の構造体を理解しようと努めていますが、どうしても理解できない点があり、 なにとぞ、ご指導・ご助言のほどよろしくお願い致します。 1.質問内容  a.構造体を引数とする、クラス間のデータの受渡し方法について ・主プロ(主クラス)側の構造体のメンバ変数を、サブプロ(サブクラス)側で更新するのに、 メンバ変数を一つずつ引数として渡せば、正しく更新できるのですが、構造体を引数として渡すと    コンパイルエラーになります。   ・どのように定義すれ場良いのかをご助言お願い致します。 2.プログラムの内容を簡単に記載します。  全部を記載する事は出来ないので、一部を省略して簡単に必要な所だけを記載します。  a.Main.cpp int main() { CMain main; CSub sub; //Main_Classの関数に、Sub_Classクラスのポインタを引数として渡し、Sub_Classクラスの関数を呼び出す main.Main_FuncCall(&sub); return 0; } b.CMain_Class.h class CMain { public: //コンストラクタ 省略 //デストラクタ 省略 typedef struct CHAR1 { int m_chx; int m_chy; bool m_chValidFlag; }; CHAR1 *pc; //データの受け渡し(ポインタ) void Main_FuncCall( CSub* cs ); };  c.CMain_Class.cpp void CMain::Main_FuncCall( CSub* cs ) { //メインクラスの構造体を引数として、サブクラスの関数を呼び出す //サブプロ側の構造体を更新する cs->Sub_FuncCall4( pc ); } d.CSub_Class.h class CSub { public: //コンストラクタ 省略 //デストラクタ 省略 typedef struct CHAR_S { int m_chx; int m_chy; bool m_chValidFlag; }; CHAR_S *ps; void Sub_FuncCall( CHAR_S *pc ); }; e.CSub_Class.cpp void CSub::Sub_FuncCall( CHAR_S *pc ) { pc[1].m_chx += ps[1].m_chx; } 3.コンパイルする  a. cs->Sub_FuncCall4( pc ); -> 1 番目の引数を 'struct CMain::CHAR1 *' から 'struct CSub::CHAR_S *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。 b.色々と試してみましたが、現在の私の知識ではコンパイルができません。   アドバイスのほど、よろしくお願いします。

  • クラス型のメンバ変数について

    クラス型のメンバ変数って、どういったメリットがあるのでしょうか? 以下のプログラムは疑問点の部分だけ書いたプログラムです。 class Caaa { (内容) }; class Cbbb { protected: Caaa m_bbb; } 上のプログラムの、 Caaa m_bbb; の部分が、どういった意味(使い道)があるのかわかりません。 int型やvoid型のメンバ変数は分かるのですが、他のクラスの型をもったメンバ変数はどういった意味があるのでしょうか。 どなたが教えてください。