dポイントプレゼントキャンペーン実施中!

最近フォームアプリケーションでの開発を始めたのですが、
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;
BOOLm_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>


BOOLInitDX(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;
}

A 回答 (1件)

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にある変数の初期化はコンストラクタでは出来ないのでしょうか?

補足日時:2009/04/04 19:27
    • good
    • 0
この回答へのお礼

しばらく考えたら何となく分かってきました。
まだ完全に理解したわけではありませんが、解説した下さったことに感謝します。

お礼日時:2009/04/06 11:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!