- 新建项目
打开VS,新建一个C++的空项目,这里注意最好是一个空项目,而不是控制台项目或者其他类型,虽然项目使用方便但是后续会报错,同时文章最后会给出一些常用错误的解决方法。 - 加入winform的引用
首先进行设置,在项目属性->高级->"Common Language Runtime Support"里选中“Common Language Runtime Support(/clr)”。
这一步之后,才可以在项目的引用中,添加引用,分别引用System和System.Window.Forms,如图:
- 创建一个新的类
创建一个新的类,点击VS主界面菜单栏的项目–>添加类。类的名称自定义,这里命名为UseWinforms,基类中填Form。
随后在自动生成的头文件代码中,添加System和Form的引用。
#pragma once
using namespace System;
using namespace System::Windows::Forms;
public ref class UseWinforms : public Form
{
public:
UseWinforms(void);
};
- 主程序
创建一个主程序来调用这个类。
#include<windows.h>
#include "UseWinforms.h"
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Application::Run(gcnew UseWinforms());
return 0;
}
保存,运行,就可以看到熟悉的winform窗口了。
- 一些 debug过程
报错一:vs2019 C++/CLI 或 C++/CX 不支持两阶段名称查找;请使用 /Zc:twoPhase-
解决方法:项目->属性->配置属性->c/c++ ->语言
把“符合模式”改为“否”
参考:https://blog.csdn.net/qq_33435149/article/details/110289698
报错二:LNK2019 无法解析的外部符号 _main,函数 “int __cdecl invoke_main(void)“
这一问题的根本原因是在新建项目时选择了控制台项目。
解决方法:
项目属性->预处理器:控制台改为WINDOWS
链接器->系统->子系统改为窗口WINDOWS
参考: https://blog.csdn.net/qq_36917144/article/details/112557109 - 更进一步的
给这个空白的窗口增加一个按钮,在生成的类的cpp文件中增加修改一部分代码,代码如下
#include<windows.h>
#include "UseWinforms.h"
UseWinforms::UseWinforms(void)
{
System::Windows::Forms::Button^ button1 = gcnew Button;//创建按钮
this->Controls->Add(button1);//把按钮附加到我们的窗体上
}
这时运行就会得到一个有着按钮的窗口。
目前实现到这一部分,如果只是为了一个界面,在C++中这么大费周章的使用winform当然不值得,所以后续还会继续更新,更加合适的使用winform。