visual studio c++ forms multiple inclusion
<p>I know there is a lot of posts about this topic, but still I can't get it to work.
I created a new project that called "nis".</p>

<p>This is "nis.cpp":</p>

<pre><code>// nis.cpp : main project file.

#include "stdafx.h"
#include "Form1.h"

using namespace nis;

[STAThreadAttribute]
int main(array&lt;System::String ^&gt; ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false); 

// Create the main window and run it
Application::Run(gcnew Form1());
return 0;
}
</code></pre>

<p>I have two forms.
This is "Form1.h":</p>

<pre><code>#ifndef FORM1_H
#define FORM1_H
#pragma once
#include "Form2.h"
namespace nis {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// &lt;summary&gt;
/// Summary for Form1
/// &lt;/summary&gt;
public ref class Form1 : public System::Windows::Forms::Form
{
public:
    Form1(void)
    {
        InitializeComponent();
        //
        //TODO: Add the constructor code here
        //
    }

protected:
    /// &lt;summary&gt;
    /// Clean up any resources being used.
    /// &lt;/summary&gt;
    ~Form1()
    {
        if (components)
        {
            delete components;
        }
    }
private: System::Windows::Forms::Button^  button1;
protected: 

private:
    /// &lt;summary&gt;
    /// Required designer variable.
    /// &lt;/summary&gt;
    System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
    /// &lt;summary&gt;
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// &lt;/summary&gt;
    void InitializeComponent(void)
    {
        this-&gt;button1 = (gcnew System::Windows::Forms::Button());
        this-&gt;SuspendLayout();
        // 
        // button1
        // 
        this-&gt;button1-&gt;Location = System::Drawing::Point(78, 77);
        this-&gt;button1-&gt;Name = L"button1";
        this-&gt;button1-&gt;Size = System::Drawing::Size(144, 53);
        this-&gt;button1-&gt;TabIndex = 0;
        this-&gt;button1-&gt;Text = L"button1";
        this-&gt;button1-&gt;UseVisualStyleBackColor = true;
        this-&gt;button1-&gt;Click += gcnew System::EventHandler(this, &amp;Form1::button1_Click);
        // 
        // Form1
        // 
        this-&gt;AutoScaleDimensions = System::Drawing::SizeF(8, 16);
        this-&gt;AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
        this-&gt;ClientSize = System::Drawing::Size(282, 253);
        this-&gt;Controls-&gt;Add(this-&gt;button1);
        this-&gt;Name = L"Form1";
        this-&gt;Text = L"Form1";
        this-&gt;Load += gcnew System::EventHandler(this, &amp;Form1::Form1_Load);
        this-&gt;ResumeLayout(false);

    }
#pragma endregion
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
         }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             this-&gt;Hide();
             Form2^ f1 = gcnew Form2();
             f1-&gt;ShowDialog();
         }
};
}

#endif
</code></pre>

<p>And this is "Form2.h":</p>

<pre><code>#ifndef FORM2_H
#define FORM2_H
#pragma once
#include "Form1.h"
namespace nis {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// &lt;summary&gt;
/// Summary for Form2
/// &lt;/summary&gt;
public ref class Form2 : public System::Windows::Forms::Form
{
public:
    Form2(void)
    {
        InitializeComponent();
        //
        //TODO: Add the constructor code here
        //
    }

protected:
    /// &lt;summary&gt;
    /// Clean up any resources being used.
    /// &lt;/summary&gt;
    ~Form2()
    {
        if (components)
        {
            delete components;
        }
    }
private: System::Windows::Forms::Button^  button1;
protected: 

private:
    /// &lt;summary&gt;
    /// Required designer variable.
    /// &lt;/summary&gt;
    System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
    /// &lt;summary&gt;
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// &lt;/summary&gt;
    void InitializeComponent(void)
    {
        this-&gt;button1 = (gcnew System::Windows::Forms::Button());
        this-&gt;SuspendLayout();
        // 
        // button1
        // 
        this-&gt;button1-&gt;Location = System::Drawing::Point(44, 102);
        this-&gt;button1-&gt;Name = L"button1";
        this-&gt;button1-&gt;Size = System::Drawing::Size(149, 53);
        this-&gt;button1-&gt;TabIndex = 0;
        this-&gt;button1-&gt;Text = L"button1";
        this-&gt;button1-&gt;UseVisualStyleBackColor = true;
        // 
        // Form2
        // 
        this-&gt;AutoScaleDimensions = System::Drawing::SizeF(8, 16);
        this-&gt;AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
        this-&gt;ClientSize = System::Drawing::Size(282, 253);
        this-&gt;Controls-&gt;Add(this-&gt;button1);
        this-&gt;Name = L"Form2";
        this-&gt;Text = L"Form2";
        this-&gt;Load += gcnew System::EventHandler(this, &amp;Form2::Form2_Load);
        this-&gt;ResumeLayout(false);

    }
#pragma endregion
private: System::Void Form2_Load(System::Object^  sender, System::EventArgs^  e) {
         }
};
}
#endif
</code></pre>

<p>Can you please tell me what's wrong with the inclusion guards?
I get this errors:</p>

<pre><code>Error   1   error C2065: 'Form2' : undeclared identifier
d:\users\lior\documents\visual studio 2010\projects\nis\nis\Form1.h 85
Error   2   error C2065: 'f1' : undeclared identifier   
d:\users\lior\documents\visual studio 2010\projects\nis\nis\Form1.h 85
Error   3   error C2061: syntax error : identifier 'Form2'  
d:\users\lior\documents\visual studio 2010\projects\nis\nis\Form1.h 85
Error   4   error C2065: 'f1' : undeclared identifier   
d:\users\lior\documents\visual studio 2010\projects\nis\nis\Form1.h 86
Error   5   error C2227: left of '-&gt;ShowDialog' must point to 
class/struct/union/generic type d:\users\lior\documents\visual studio 
2010\projects\nis\nis\Form1.h   86
</code></pre>

<p>Thank you so much!</p>