- 締切済み
C++でのwindows フォームアプリケーションについて
最近フォームアプリケーションでの開発を始めたのですが、 public ref class Form1 : public System::Windows::Forms::Form から #pragma region Windows Form Designer generated code の間に記述されている内容がサンプルコードを見たりしても理解できません。 どのような時に呼び出されて、どのような意味があるのでしょうか 以下、参考にさせてもらったサンプルコード public ref class Form1 : public System::Windows::Forms::Form { protected: msCDXMain* m_pDXMain; BOOL m_bStart; public: Form1(void) { InitializeComponent(); InitDX(); m_bStart = FALSE; // //TODO: ここにコンストラクタ コードを追加します // } protected: /// <summary> /// 使用中のリソースをすべてクリーンアップします。 /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::Button^ button1; private: System::Windows::Forms::Timer^ PaintTimer; protected: private: System::ComponentModel::IContainer^ components; private: /// <summary> /// 必要なデザイナ変数です。 /// </summary> BOOL InitDX(void) { m_pDXMain = NULL; try{ m_pDXMain = new msCDXMain; if(!m_pDXMain->Init((HWND)this->Handle.ToInt32())){ SAFE_DELETE(m_pDXMain); throw 0; } } catch(...){ return FALSE; } return TRUE; }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
protected: // アクセス指定子 このクラスの継承時に公開するレベルの設定 // msCDXMain型のポインターのメンバー変数 msCDXMain* m_pDXMain; // 何かのフラグ BOOL m_bStart; public: Form1(void) { // コントロールなどの初期化ルーチン InitializeComponent(); // たぶんダイレクトXの初期化ルーチン InitDX(); // フラグの初期化 m_bStart = FALSE; // //TODO: ここにコンストラクタ コードを追加します // } protected: /// <summary> /// 使用中のリソースをすべてクリーンアップします。 /// </summary> ~Form1() { // 後始末ルーチン if (components) { delete components; } } // フォームのボタンコントロールの宣言 private: System::Windows::Forms::Button^ button1; // タイマーコントロールの宣言 private: System::Windows::Forms::Timer^ PaintTimer; protected: // デザイナで使う記述 private: System::ComponentModel::IContainer^ components; private: /// <summary> /// 必要なデザイナ変数です。 /// </summary> BOOL InitDX(void) { // メンバー変数の初期化 m_pDXMain = NULL; try{ // msCDXMainクラスの生成 m_pDXMain = new msCDXMain; // 生成したクラスの初期化ルーチン呼び出し if(!m_pDXMain->Init((HWND)this->Handle.ToInt32())){ // 初期化失敗なら 作成したオブジェクトを破棄 // 例外を送出して終了 SAFE_DELETE(m_pDXMain); throw 0; } } catch(...){ // その他の例外処理 ... 初期化失敗でリターン return FALSE; } // 初期化成功 return TRUE; といった具合かと ...
お礼
しばらく考えたら何となく分かってきました。 まだ完全に理解したわけではありませんが、解説した下さったことに感謝します。
補足
最初のprotectedは変数の宣言、publicはコンストラクタ、2番目のprotectedはデストラクタで良いのですかね? privateにある変数の初期化はコンストラクタでは出来ないのでしょうか?