以前是做C#的,对Winform情有独钟,最近想转C++,想把以前的一些Delphi转成c++,MFC我不熟而且用起来相当烦效果又丑,GTK图形库用起来太麻烦,琢磨着研究一下WInform前台,C++做后台的方法,谷歌了一下,没看到什么中国资料,我草,我以前看过的啊,找来找去,找到一篇英文的,写得太纠结,我结合自己使用的经验,重新整理一下,言简意赅,简明易懂。谨供新人参考,老鸟勿拍。

  1. 首先打开你的VS2005
  2. 依次点击菜单栏的文件-->新建-->项目
  3. 在左边的语言列表选里,选择C++分支下的CLR,然后在右边单击“CLR 空项目”
  4. 在名称框里输入Exercise2:
  5. 点击“OK”,创建项目成功。
  6. 好了,这只是创建了好了一个托管C++项目,要使用WINFORM,我们要引入相关的.NET组件。
  7. 在vs主界面上依次点击菜单栏的项目-->"引用";
  8. 在弹出的子窗口中选择添加新引用;
  9. 在.NET标签页下选择System,点确定,再点击添加新应用,在.NET标签页下选择System.Window.Forms,然后确定,如图
  10. 都完成后,应该像这样,然后点击确定
  11. 创建一个新的类,点击VS主界面菜单栏的项目-->添加类;
  12. 在弹出的子窗体右边选择C++类,点确定,会出现添加类向导,在类名中输入CExercise,基类中填Form
  13. 然后我们来到自动生成的头文件代码中,添加System和Form的引用,修改后的文件应该如下
  14.  1
     2#pragma once
     3
     4using namespace System;
     5using namespace System::Windows::Forms;
     6
     7public ref class CExercise : public Form
     8{
     9public:
    10    CExercise(void);
    11};

    然后我们要创建一个主程序来调用这个类。这个大家应该都比我熟的,右击源文件文件夹,点击添加-->新建项,选择CPP文件,代码如下:

  15.  1
     2
     3#include <windows.h>
     4#include "Exercise.h"
     5
     6int APIENTRY WinMain(HINSTANCE hInstance,
     7             HINSTANCE hPrevInstance,
     8             LPSTR lpCmdLine,
     9             int nCmdShow)
    10{
    11    Application::Run(gcnew CExercise());
    12
    13    return 0;
    14}

    含义我不多说了,把那个Cexercise换成你自己别的名字的类就可以运行那个类了,当然了,要注意包含头文件。点击运行看看,一个白白的窗体,对吗,好的,革命成功迈出了坚实的一步。

  16. 下面我们来试着添加一个button按钮,修改Exercise.cpp的代码如下
  17. 1
    2#include "Exercise.h"
    3
    4CExercise::CExercise(void)
    5{
    6    System::Windows::Forms::Button^  button1=gcnew Button;//创建按钮
    7    this->Controls->Add(button1);//把按钮附加到我们的窗体上
    8}
    9

    在运行看看,应该像这样

  18. 然后如果你还想继续给这个按钮添加文字设置尺寸什么的,你可以通过像这样的代码,具体我不说多少,因为选择Winform就是看中快速的控件拖拉功能,都是手写我还不如用GTK
  19. this->button1->Name = L"button1";//设置按钮文字
    this->button1->Size = System::Drawing::Size(75, 23);//设置按钮尺寸
  20. 好了,下面重点来了,如何像C#一样自由地拖拉控件改属性呢,我们右击项目,选择添加-->新建项。
  21. 在弹出的子窗体右边选择Windows窗体,输入一个名字,比如“HelloWorld”,点击确定
  22. 然后我们就欣喜的发现,哇,又回到Winform拖拉控件的时代啦,是的,没错,而且我们可以以C++写后台。没用过c#的朋友请在界面上找找工具箱,实在没找到请依次点击主窗体上菜单栏的视图-->工具箱,然后从工具箱里找到一个button控件拖动到主窗体上。
  23. 之后双击这个button,会自动添加一个button的单击事件,我们希望单击的时候弹出一个“我是傻逼”的消息框,代码如下:
  24. 1    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    2                 //MessageBox.Show(this,"wocao");//C#格式的调用方法是不行的
    3                 MessageBox::Show(this,"我是傻逼");//这才是正确的
    4         }
    5    };
    6}
  25. 第一个参数是父窗体,第二个参数是消息框的内容。细心的同学发现了,这里和C#不太一样,是的,如果你按C#的写法:Messsage.Show(...),这样程序是没法通过编译的,毕竟是两种语言嘛。
  26. 好了,我们回到主程序入口那里,修改Exercise()为HelloWorld(),运行看看,出错了!!没错,你还得添加头文件,添加引用,真是麻烦啊,没办法,这儿还没有在C#下的引用添加提示,不知道Clipse下的Cdt有没有这个功能,最终代码如下
     1#include <windows.h>
     2#include "Hello World.h"
     4using namespace WInformCpp;
     5int APIENTRY WinMain(HINSTANCE hInstance,
     6                     HINSTANCE hPrevInstance,
     7                     LPSTR lpCmdLine,
     8                     int nCmdShow)
     9{
    10    Application::Run(gcnew HelloWorld());
    11
    12    return 0;
    13}

    好了,运行一下看看。像这样,那就对了,再深入地使用就不是本贴讨论的范畴了,在C++上,各位都是我的前辈

c++用WinForm做界面的实现相关推荐

  1. WinForm 清空界面控件值的小技巧

    WinForm 清空界面控件值的小技巧 原文:WinForm 清空界面控件值的小技巧 在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值 ...

  2. python程序如何做界面_如何用Python给已有小程序做界面?

    我尝试过很多次用 Python 进行 GUI 编程,就是你说的做界面.最后的结果就是,人生苦短,做 GUI 我不用 Python(也有可能我是被微软给宠坏了:) 但是你说的这种,很简单的界面,使用 P ...

  3. ironpython 教程_「ironpython」VS2017 IronPython做界面

    本人开始做毕设了,但老师说工具要有界面,所以就开始找Python做界面的东西--之前做过C#的界面,脱拉拽很快界面就完成了,后来我查了下IronPython是用C#写的python解释器,也可以脱拉拽 ...

  4. python程序如何做界面_python是如何写界面程序的?

    展开全部 python做界面2113还是用PYQT吧 PYQT支持PY2和PY3 wxpython仅仅支5261持PY2 而python自带的4102tkinter实在是很难1653弄#!/usr/b ...

  5. 解决VS在高DPI下设计出的Winform程序界面变形问题

    解决VS在高DPI下设计出的Winform程序界面变形问题 参考文章: (1)解决VS在高DPI下设计出的Winform程序界面变形问题 (2)https://www.cnblogs.com/BenP ...

  6. python能做界面吗_如何使用pyQT做pythonGUI界面|

    如何使用pyQT做pythonGUI界面| python3 gui教程2020-09-24 23:12:27人已围观 python开发的gui漂亮吗 可以 0.前言 有不学者会问,Python 写的程 ...

  7. 使用 advanced installer 为 winform 做自动更新

    advanced installer 是一款打包程序,基于 windows installer 并扩展了一些功能,比如安装统计,自动更新,授权验证等,本文将介绍你如果使用 advanced insta ...

  8. PyQt4 做界面,编辑文字 QtGui.QLabel遇到文字显示不出来

    说在前面 python2.7 + PyQt4 提示框(类似Message Box). PyQt4 做界面,编辑文字使用QtGui.QLabel,文字过长显示不出来. pyqt新手入门,csdn上各种解 ...

  9. WinForm程序界面假死,寻求完美解决方案

    WinForm程序界面假死,寻求完美解决方案 参考文章: (1)WinForm程序界面假死,寻求完美解决方案 (2)https://www.cnblogs.com/funying/p/3230873. ...

最新文章

  1. 在Ubuntu下FFmpeg编译,支持x264和x265(HECV)
  2. OpenGL硬件加速指南
  3. wxWidgets:wxWebView 示例
  4. 《程序员面试金典》最大和子矩阵
  5. hadoop 多节点集群_设置Apache Hadoop多节点集群
  6. 一文读懂云上DevOps能力体系
  7. PAT乙级 1013 数素数
  8. Windows 2000命令行如何查看进程PID和杀进程
  9. 区块链需要用到mysql吗_区块链和传统数据库有什么区别?
  10. 一个中文字符占几个字节_字节与字符的关系
  11. 没有躲过的坑--vector使用erase后迭代器变成野指针
  12. C语言蒙特卡洛,蒙特卡洛(Monte Carlo)模拟法 一  ( EXCEL 举例)
  13. Django之Model操作之select_related和prefetch_related【ORM篇八】
  14. CAT监控系统搭建与使用(V3.0.0)
  15. html怎么混合颜色,CSS3 多色混合背景
  16. Unity 预定义标签
  17. Python游戏开发工程师的起步,几款游戏开发案例
  18. 打印Excel工作表时忽略打印区域
  19. 游戏夜读 | 简单认识一下爬虫
  20. 滑坡的剖面图怎么用计算机绘制,利用AutoCAD绘制地质图的若干方法

热门文章

  1. 节约里程法java代码_患者,男,70岁,有多年排尿困难,呈淋漓状,近2年来双侧腹股沟区出现半年圆形肿块,站立时明显,平卧后消失,体检时压迫内环肿块仍出现,诊断为...
  2. 如何把自己的网站部署在网上_Terminal:如何在IPFS上部署Wordpress网站
  3. php源码安装空白,源代码安装完成后,页面一片空白?
  4. iphone7防水_什么是IP68防尘防水,您的手机是IP68级别手机,进水也不给保修
  5. 在华为鸿蒙OS上尝鲜,我的第一个“hello world”
  6. if函数如何嵌入多个android,Android中多个EditText输入效果的解决方式
  7. LL-verilog语法:case用法
  8. MicroBlaze程序融合fpga的bit并烧写入Flash方法
  9. matlab 常用m文件,MATLAB基础课程 第三章 M文件知识(4)
  10. python国内谁的书最好看_强烈建议|转行Python最好看一下这篇文章