真奇怪的Windows Form C ++错误

时间:2012-07-17 14:24:57

标签: winforms visual-studio c++-cli

所以我正在编写一个Windows窗体应用程序,因此当我运行它时会抛出一个不应该抛出的错误。它抛出“语法错误:丢失;使用前”

我尝试在前一行放一个,但它没有用。

文件问题是这个

// Rock Paper Scisors.cpp : main project file.

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

using namespace RockPaperScisors;

[STAThreadAttribute]
int main(array<System::String ^> ^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;
}}

stdafx.h是MS Visual C ++ Express的一部分,无论如何,Form1.h的代码可以在这个pastebin中找到(不想填满整个堆栈溢出页面。)http://pastebin.com/324mpCps

所有帮助都得到了赞赏!

1 个答案:

答案 0 :(得分:1)

你刚刚与括号混淆了。

首先,删除Rock Paper Scisors.cpp文件中的最后一个'}'。最后,这就是正确的Form1.h文件的外观:

#include<time.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctime>
#include<cstdlib>

#pragma once

namespace RockPaperScisors {

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

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

    protected:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  Rock;
    protected: 
    private: System::Windows::Forms::Button^  Paper;
    private: System::Windows::Forms::Button^  cis;
    private: System::Windows::Forms::TextBox^  ComBox;

    private: System::Windows::Forms::TextBox^  WonBox;
    private: System::Windows::Forms::Label^  CompLabel;


    private: System::Windows::Forms::Label^  WonLabel;


    private:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        void InitializeComponent(void)
        {
            this->Rock = (gcnew System::Windows::Forms::Button());
            this->Paper = (gcnew System::Windows::Forms::Button());
            this->cis = (gcnew System::Windows::Forms::Button());
            this->ComBox = (gcnew System::Windows::Forms::TextBox());
            this->WonBox = (gcnew System::Windows::Forms::TextBox());
            this->CompLabel = (gcnew System::Windows::Forms::Label());
            this->WonLabel = (gcnew System::Windows::Forms::Label());
            this->SuspendLayout();
            // 
            // Rock
            // 
            this->Rock->Location = System::Drawing::Point(13, 33);
            this->Rock->Name = L"Rock";
            this->Rock->Size = System::Drawing::Size(75, 23);
            this->Rock->TabIndex = 0;
            this->Rock->Text = L"Rock";
            this->Rock->UseVisualStyleBackColor = true;
            this->Rock->Click += gcnew System::EventHandler(this, &Form1::Rock_Click);
            // 
            // Paper
            // 
            this->Paper->Location = System::Drawing::Point(94, 33);
            this->Paper->Name = L"Paper";
            this->Paper->Size = System::Drawing::Size(75, 23);
            this->Paper->TabIndex = 0;
            this->Paper->Text = L"Paper";
            this->Paper->UseVisualStyleBackColor = true;
            this->Paper->Click += gcnew System::EventHandler(this, &Form1::Paper_Click);
            // 
            // cis
            // 
            this->cis->Location = System::Drawing::Point(175, 33);
            this->cis->Name = L"cis";
            this->cis->Size = System::Drawing::Size(75, 23);
            this->cis->TabIndex = 0;
            this->cis->Text = L"Scisors";
            this->cis->UseVisualStyleBackColor = true;
            this->cis->Click += gcnew System::EventHandler(this, &Form1::cis_Click);
            // 
            // ComBox
            // 
            this->ComBox->Location = System::Drawing::Point(83, 127);
            this->ComBox->Name = L"ComBox";
            this->ComBox->Size = System::Drawing::Size(100, 20);
            this->ComBox->TabIndex = 1;
            // 
            // WonBox
            // 
            this->WonBox->Location = System::Drawing::Point(83, 190);
            this->WonBox->Name = L"WonBox";
            this->WonBox->Size = System::Drawing::Size(100, 20);
            this->WonBox->TabIndex = 2;
            // 
            // CompLabel
            // 
            this->CompLabel->AutoSize = true;
            this->CompLabel->Location = System::Drawing::Point(91, 95);
            this->CompLabel->Name = L"CompLabel";
            this->CompLabel->Size = System::Drawing::Size(88, 13);
            this->CompLabel->TabIndex = 3;
            this->CompLabel->Text = L"Computer Choice";
            // 
            // WonLabel
            // 
            this->WonLabel->AutoSize = true;
            this->WonLabel->Location = System::Drawing::Point(91, 163);
            this->WonLabel->Name = L"WonLabel";
            this->WonLabel->Size = System::Drawing::Size(62, 13);
            this->WonLabel->TabIndex = 3;
            this->WonLabel->Text = L"Who Won\?";
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 262);
            this->Controls->Add(this->WonLabel);
            this->Controls->Add(this->CompLabel);
            this->Controls->Add(this->WonBox);
            this->Controls->Add(this->ComBox);
            this->Controls->Add(this->cis);
            this->Controls->Add(this->Paper);
            this->Controls->Add(this->Rock);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
            this->PerformLayout();

        }
#pragma endregion
    int userChoice, compChoice;
private: System::Void Rock_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             ComBox->Text="";
             userChoice=1;

        compChoice=rand()%3+1;

            switch(compChoice)
            {
            case 1:
                ComBox->Text="Rock";
                WonBox->Text="You Tied";
                break;
            case 2:
                ComBox->Text="Paper";
                WonBox->Text="You Lost";
                break;
            case 3:
                ComBox->Text="Scisors";
                WonBox->Text="You Won";
                break;
            }

         }
private: System::Void Paper_Click(System::Object^  sender, System::EventArgs^  e) {
             ComBox->Text="";
             userChoice=2;
        compChoice=rand()%3+1;

            switch(compChoice){
            case 1:
                ComBox->Text="Rock";
                WonBox->Text="You Won";
                break;
            case 2:
                ComBox->Text="Paper";
                WonBox->Text="You Tied";
                break;
            case 3:
                ComBox->Text="Scisors";
                WonBox->Text="You Lost!";
                break;
            }
         }
private: System::Void cis_Click(System::Object^  sender, System::EventArgs^  e) {
             ComBox->Text="";
             userChoice=3;
            compChoice=rand()%3+1;


            switch(compChoice){
            case 1:
                ComBox->Text="Rock";
                WonBox->Text="You Lost";
                break;
            case 2:
                ComBox->Text="Paper";
                WonBox->Text="You Won";
                break;
            case 3:
                ComBox->Text="Scisors";
                WonBox->Text="You Tied!";
                break;
            }
}  //The culprit!
};
}

我只在末尾附近添加了一个括号,关闭了课程中的最后一个方法。由于Visual Studio 2010及更早版本不支持C ++ / CLI中的IntelliSense,因此在此类项目中可能会出现错误。