CppForm.cpp
上传用户:sz0451
上传日期:2022-07-29
资源大小:256k
文件大小:14k
源码类别:

.net编程

开发平台:

Visual C++

  1. // This is the main project file for VC++ application project 
  2. // generated using an Application Wizard.
  3. #include "stdafx.h"
  4. #using <mscorlib.dll>
  5. #using <System.dll>
  6. #using <System.Windows.Forms.dll>
  7. #using <System.Drawing.dll>
  8. using namespace System;
  9. using namespace System::ComponentModel;
  10. using namespace System::Windows::Forms;
  11. using namespace System::Drawing;
  12. __gc public class AboutBox : public Form {
  13. public:
  14.     AboutBox()
  15.     {
  16.         // Set some form parameters.
  17.         Text = S"About CppForm";
  18.         FormBorderStyle = FormBorderStyle::Fixed3D;
  19.         Size = System::Drawing::Size(300,150);
  20.         
  21.         // Add labels to the form.
  22.         Label* label1 = new Label();
  23.         label1->Text = "The CppForm Application";
  24.         label1->Size = System::Drawing::Size(label1->PreferredWidth,
  25.                                              label1->PreferredHeight);
  26.         label1->Location = Point(20, 30);
  27.         Label* label2 = new Label();
  28.         label2->Text = "Julian Templeman, 2001";
  29.         label2->Size = System::Drawing::Size(label1->PreferredWidth,
  30.                                              label1->PreferredHeight);
  31.         label2->Location = Point(20, 30+label1->PreferredHeight+10);
  32.         // Add the labels to the form.
  33.         Controls->Add(label1);
  34.         Controls->Add(label2);
  35.         // Add the OK button.
  36.         OKButton = new Button();
  37.         OKButton->Text = S"OK";
  38.         OKButton->DialogResult = System::Windows::Forms::DialogResult::OK;
  39.         OKButton->Size = System::Drawing::Size(40,25);
  40.         OKButton->Location = Point(240,85);
  41.         // Add the button to the form.
  42.         Controls->Add(OKButton);
  43.     }
  44. private:
  45.     Button* OKButton;
  46. };
  47. __gc public class MyDialog : public Form {
  48. public:
  49.     MyDialog()
  50.     {
  51.         // Set the form parameters
  52.         Text = S"Personal Details";
  53.         FormBorderStyle = FormBorderStyle::Fixed3D;
  54.         Size = System::Drawing::Size(280,200);
  55.         // Create the controls
  56.         nameLabel = new Label();
  57.         nameBox = new TextBox();
  58.         phoneLabel = new Label();
  59.         phoneBox = new TextBox();
  60.         deptLabel = new Label();
  61.         deptCombo = new ComboBox();
  62.         OKBtn = new Button();
  63.         CancelBtn = new Button();
  64.         
  65.         // nameLabel
  66.         nameLabel->Location = Point(16, 24);
  67.         nameLabel->Size = System::Drawing::Size(48, 16);
  68.         nameLabel->Text = "Name:";
  69.         nameLabel->TextAlign = ContentAlignment::MiddleRight;
  70.         // nameBox
  71.         nameBox->Location = Point(72, 24);
  72.         nameBox->Size = System::Drawing::Size(152, 20);
  73.         nameBox->Text = "";
  74.         // phoneLabel
  75.         phoneLabel->Location = Point(16, 56);
  76.         phoneLabel->Size = System::Drawing::Size(48, 16);
  77.         phoneLabel->Text = "Phone:";
  78.         phoneLabel->TextAlign = ContentAlignment::MiddleRight;
  79.         // phoneBox
  80.         phoneBox->Location = Point(72, 56);
  81.         phoneBox->Size = System::Drawing::Size(152, 20);
  82.         phoneBox->Text = "";
  83.         // deptLabel
  84.         deptLabel->Location = Point(16, 88);
  85.         deptLabel->Size = System::Drawing::Size(48, 16);
  86.         deptLabel->Text = "Dept:";
  87.         deptLabel->TextAlign = ContentAlignment::MiddleRight;
  88.         // deptCombo
  89.         deptCombo->DropDownWidth = 121;
  90.         deptCombo->Location = Point(72, 88);
  91.         deptCombo->Size = System::Drawing::Size(121, 21);
  92.         deptCombo->Items->Add(S"IT");
  93.         deptCombo->Items->Add(S"Admin");
  94.         deptCombo->Items->Add(S"R&D");
  95.         deptCombo->Items->Add(S"Catering");
  96.         deptCombo->Items->Add(S"Manufacturing");
  97.         // OKButton
  98.         OKBtn->Location = Point(104, 136);
  99.         OKBtn->Name = "OKButton";
  100.         OKBtn->Text = "OK";
  101.         OKBtn->DialogResult = DialogResult::OK;
  102.         // CancelButton
  103.         CancelBtn->Location = Point(192, 136);
  104.         CancelBtn->Name = "CancelButton";
  105.         CancelBtn->Text = "Cancel";
  106.         CancelBtn->DialogResult = DialogResult::Cancel;
  107.         // Add the controls
  108.         Controls->Add(nameBox);
  109.         Controls->Add(phoneBox);
  110.         Controls->Add(nameLabel);
  111.         Controls->Add(phoneLabel);
  112.         Controls->Add(deptLabel);
  113.         Controls->Add(deptCombo);
  114.         Controls->Add(OKBtn);
  115.         Controls->Add(CancelBtn);
  116.         AcceptButton = OKBtn;
  117.         CancelButton = CancelBtn;
  118.     }
  119. public:
  120.     void setName(String* theName) { nameBox->Text = theName; }
  121.     String* getName() { return nameBox->Text; }
  122.     void setPhone(String* thePhone) { phoneBox->Text = thePhone; }
  123.     String* getPhone() { return phoneBox->Text; }
  124.     void setDept(int theDept) { deptCombo->SelectedIndex = theDept; }
  125.     int getDept() { return deptCombo->SelectedIndex; }
  126. private:
  127.     Label* nameLabel;
  128.     TextBox* nameBox;
  129.     Label* phoneLabel;
  130.     TextBox* phoneBox;
  131.     Label* deptLabel;
  132.     ComboBox* deptCombo;
  133.     Button* OKBtn;
  134.     Button* CancelBtn;
  135. };
  136. __gc public class CppForm : public Form {
  137. public:
  138.     CppForm()
  139.     {
  140.         // Set the form caption.
  141.         Text = S"Test Form";
  142.         // Set the border style to 3D fixed.
  143.         FormBorderStyle = FormBorderStyle::Fixed3D;
  144.         // Set up controls on the form.
  145.         Setup_Menu();
  146.         Setup_Context_Menu();
  147.         Setup_Buttons();
  148.         Setup_Label();
  149.         Setup_Group();
  150.         Setup_Combo();
  151.         Setup_Text();
  152.         // Resize the form so it has room for a text box.
  153.         Size = System::Drawing::Size(450, 300);
  154.     }
  155. private:
  156.     Button* btn1;
  157.     Button* btn2;
  158.     Label* theLabel;
  159.     GroupBox* gbox;
  160.     RadioButton* rb1;
  161.     RadioButton* rb2;
  162.     RadioButton* rb3;
  163.     ComboBox* combo1;
  164.     TextBox* text1;
  165.     MainMenu* menuBar;
  166.     MenuItem* fileMenu;
  167.     MenuItem* item1;
  168.     MenuItem* item2;
  169.     MenuItem* item11;
  170.     MenuItem* fontDlgItem;
  171.     System::Windows::Forms::ContextMenu* popupMenu;
  172.     MenuItem* item_p1;
  173.     MenuItem* item_p2;
  174.     MenuItem* item_p3;
  175.     System::Drawing::Font* labelFont;
  176. private:
  177.     void Btn1_Clicked(Object* pSender, EventArgs* pArgs)
  178.     {
  179.         MessageBox::Show(S"It worked!", S"Message...");
  180.     }
  181. private:
  182.     void Btn2_Clicked(Object* pSender, EventArgs* pArgs)
  183.     {
  184.         MessageBox::Show(S"It also worked!", S"Message...");
  185.     }
  186. private:
  187.     void Combo1_SelChanged(Object* pSender, EventArgs* pArgs)
  188.     {
  189.         if (pSender == combo1)
  190.         {
  191.             String* ps = String::Concat(S"New index is ", 
  192.                                         __box(combo1->SelectedIndex)->ToString());
  193.             MessageBox::Show(ps, S"Index Change");
  194.         }
  195.     }
  196. private:
  197.     void MenuItem_Clicked(Object* pSender, EventArgs* pArgs)
  198.     {
  199.         if (pSender == item1)
  200.         {
  201.             // Display the About box.
  202.             AboutBox* box = new AboutBox();
  203.             box->ShowDialog();
  204.         }
  205.         else if (pSender == item2)
  206.         {
  207.             // Exit from the application.
  208.             Application::Exit();
  209.         }
  210.         else if (pSender == item11)
  211.         {
  212.             // Create the dialog
  213.             MyDialog* box = new MyDialog();
  214.             // Fill in the initial data
  215.             box->setName(S"Joe Bloggs");
  216.             box->setPhone(S"555-0155");
  217.             box->setDept(1);
  218.             // Show the dialog
  219.             if (box->ShowDialog() == DialogResult::OK)
  220.             {
  221.                 // If it came back with OK, display the name
  222.                 MessageBox::Show(box->getName(), S"Name was...");
  223.             }
  224.         }
  225.         else if (pSender == fontDlgItem)
  226.         {
  227.             FontDialog* fd = new FontDialog();
  228.             fd->Font = labelFont;
  229.             if (fd->ShowDialog() == DialogResult::OK)
  230.             {
  231.                 MessageBox::Show(fd->Font->Name, S"Name was...");
  232.                 labelFont = fd->Font;
  233.                 theLabel->Font = labelFont;
  234.             }
  235.         }
  236.         else
  237.             MessageBox::Show(S"Some other menu item", S"Menu");
  238.     }
  239. private:
  240.     void Radio_Clicked(Object* pSender, EventArgs* pArgs)
  241.     {
  242.         if (pSender == rb1)
  243.             text1->Text = "You have selected the Visual Basic option.";
  244.         else if (pSender == rb2)
  245.             text1->Text = "You have selected the C# option.";
  246.         else if (pSender == rb3)
  247.             text1->Text = "You have selected the C++ option.rnrn"
  248.                         "Here is another line";
  249.     }
  250. private:
  251.     void Setup_Buttons()
  252.     {
  253.         // Add an OK button.
  254.         btn1 = new Button();
  255.         btn1->Text = S"OK";
  256.         btn1->Size = System::Drawing::Size(70, 25);
  257.         btn1->Location = Point(130, 225);
  258.         btn1->Click += new EventHandler(this, &CppForm::Btn1_Clicked);
  259.         Controls->Add(btn1);
  260.         // Add a Cancel button.
  261.         btn2 = new Button();
  262.         btn2->Text = S"Cancel";
  263.         btn2->Size = System::Drawing::Size(70, 25);
  264.         btn2->Location = Point(210, 225);
  265.         btn2->Click += new EventHandler(this, &CppForm::Btn2_Clicked);
  266.         Controls->Add(btn2);
  267.     }
  268. private:
  269.     void Setup_Combo ()
  270.     {
  271.         // Setup combo box.
  272.         combo1 = new ComboBox();
  273.         combo1->DropDownStyle = ComboBoxStyle::DropDownList;
  274.         combo1->Location = Point(20,180);
  275.     
  276.         // Set the width of the combo box based on the preferred width of the text
  277.         // "Intermediate" (the longest string the combo's list will contain), plus
  278.         // twenty pixels for the drop-down button at the right of the combo's text box.
  279.         Label* l1 = new Label();
  280.         l1->Text = S"Intermediate";
  281.         combo1->Width = l1->PreferredWidth + 20;
  282.         
  283.         // Fill the combo box with items and set its default selection.
  284.         combo1->Items->Add(S"Beginner");
  285.         combo1->Items->Add(S"Intermediate");
  286.         combo1->Items->Add(S"Advanced");
  287.         combo1->SelectedIndex = 0;
  288.         // Add the combo box to the form.
  289.         Controls->Add(combo1);
  290.         // Set the event handler for the combo box SelectedIndexChanged event.
  291.         combo1->SelectedIndexChanged += new EventHandler(this, &CppForm::Combo1_SelChanged);
  292.     }
  293. private:
  294.     void Setup_Context_Menu ()
  295.     {
  296.         // Create the context menu.
  297.         popupMenu = new System::Windows::Forms::ContextMenu();
  298.         // Create the items in the context menu.
  299.         item_p1 = new MenuItem("One");
  300.         popupMenu->MenuItems->Add(item_p1);
  301.         item_p2 = new MenuItem("Two");
  302.         popupMenu->MenuItems->Add(item_p2);
  303.         item_p3 = new MenuItem("Three");
  304.         popupMenu->MenuItems->Add(item_p3);
  305.         ContextMenu = popupMenu;
  306.     }
  307. private:
  308.     void Setup_Group ()
  309.     {
  310.         // Create the group box.
  311.         gbox = new GroupBox();
  312.         gbox->Text = S"Language";
  313.         gbox->Location = Point(20, 60);
  314.         // Create the radio buttons.
  315.         rb1 = new RadioButton();
  316.         rb1->Text = S"Visual Basic";
  317.         rb1->Location = Point(10,15);
  318.         rb2 = new RadioButton();
  319.         rb2->Text = S"C#";
  320.         rb2->Location = Point(10,40);
  321.         rb3 = new RadioButton();
  322.         rb3->Text = S"C++";
  323.         rb3->Location = Point(10,65);
  324.         rb3->Checked = true;
  325.         // Add radio buttons to the group box.
  326.         gbox->Controls->Add(rb1);
  327.         gbox->Controls->Add(rb2);
  328.         gbox->Controls->Add(rb3);
  329.         // Add group box to the form.
  330.         Controls->Add(gbox);
  331.         // Connect event handler to the radio button controls.
  332.         rb1->Click += new EventHandler(this, &CppForm::Radio_Clicked);
  333.         rb2->Click += new EventHandler(this, &CppForm::Radio_Clicked);
  334.         rb3->Click += new EventHandler(this, &CppForm::Radio_Clicked);
  335.     }
  336. private:
  337.     void Setup_Label()
  338.     {
  339.         theLabel = new Label();
  340.         theLabel->AutoSize = true;
  341.         theLabel->Text = S"   Acme Consulting, Inc.";
  342.         // Set the font.
  343.         labelFont = new System::Drawing::Font(S"Verdana", 16, FontStyle::Italic);
  344.         theLabel->Font = labelFont;
  345.         theLabel->ForeColor = Color::Black;
  346.         // Set location and size.
  347.         theLabel->Location = Point(20,20);
  348.         theLabel->Size = System::Drawing::Size(theLabel->PreferredWidth, 
  349.                                                theLabel->PreferredHeight);
  350.         // Add an image.
  351.         Bitmap* theImage = new Bitmap("SAVE.BMP");
  352.         theLabel->Image = theImage;
  353.         theLabel->ImageAlign = ContentAlignment::MiddleLeft;
  354.         // Add the label to the form's controls.
  355.         Controls->Add(theLabel);
  356.     }
  357. private:
  358.     void Setup_Menu()
  359.     {
  360.         // Create the main menu bar.
  361.         menuBar = new MainMenu();
  362.         // Create the File menu.
  363.         fileMenu = new MenuItem("&File");
  364.         menuBar->MenuItems->Add(fileMenu);
  365.         // Create menu items and add them.
  366.         item1 = new MenuItem("&About...");
  367.         item11 = new MenuItem("&MyDialog...");
  368.         fontDlgItem = new MenuItem("&Choose Font...");
  369.         item2 = new MenuItem("E&xit");
  370.         fileMenu->MenuItems->Add(item1);
  371.         fileMenu->MenuItems->Add(item11);
  372.         fileMenu->MenuItems->Add(fontDlgItem);
  373.         fileMenu->MenuItems->Add(item2);
  374.         // Connect event handler to the menu items.
  375.         item1->Click += new EventHandler(this, &CppForm::MenuItem_Clicked);
  376.         item11->Click += new EventHandler(this, &CppForm::MenuItem_Clicked);
  377.         fontDlgItem->Click += new EventHandler(this, &CppForm::MenuItem_Clicked);
  378.         item2->Click += new EventHandler(this, &CppForm::MenuItem_Clicked);
  379.         // Add the main menu to the form.
  380.         Menu = menuBar;
  381.     }
  382. private:
  383.     void Setup_Text()
  384.     {
  385.         text1 = new TextBox();
  386.         text1->Location = Point(250,60);
  387.         text1->Size = System::Drawing::Size(100,150);
  388.         text1->Multiline = true;
  389.         Controls->Add(text1);
  390.     }
  391. };
  392. // This is the entry point for this application
  393. #ifdef _UNICODE
  394. int wmain(void)
  395. #else
  396. int main(void)
  397. #endif
  398. {
  399.     Console::WriteLine(S"Forms Example");
  400.     // Create a form.
  401.     Application::Run(new CppForm());
  402.     return 0;
  403. }