企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
开发环境搭建好以后,就可以开始第一次win32程序 ``` #include <windows.h> #include <tchar.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ MessageBox(NULL, _T("Hello C Cmd Compile欢迎"), _T("Welcome"), MB_OKCANCEL); return 0; } ``` 代码很短, **WinMain** 是Win32下的窗口程序的入口函数,就像是C语言的 main函数一样。 **WINAPI** 是windef.h中定义的一个常量。 ``` #define WINAPI __stdcall```,表示函数参数按照从又向左的方式压入堆栈,也有诸如\_\_cdecl、\_\_pascal等规则。使用\_\_stdcall还是\_\_cdecl或\_\_pascal,在纯Windows编程下并非特别需要。所以这里如果不写```WINAPI``` 也能正常生成程序。 &nbsp; 有了以上程序源文件,现在就是要编译,链接生成exe文件 * 使用cl命令编译源程序,具体用法详见[cl命令的用法](https://docs.microsoft.com/zh-cn/cpp/build/reference/d-preprocessor-definitions?view=vs-2019) ``` cl /c /D UNICODE /D _UNICODE cwin.c /c 指只编译,不链接 /D 指预处理选项,这里预定义了程序字符集为UNICODE. 没带下划线的UNICODE主要是针对Windows的头文件。 带下划线的\_UNICODE主要是针对C运行库的。 同时要保证源文件的文本格式是unicode格式,用记事本打开源文件cwin.c,选择“另存为”, 再选择unicode即可 ``` 执行完成以上命令,在当前目录下就会生成同名的cwin.obj文件。 * 使用 link命令 链接生成exe文件 ``` link *.obj /SUBSYSTEM:WINDOWS /MACHINE:X86 user32.lib``` 执行以上命令即可生成exe文件。 **这里的重点是如何处理unicode字符串:** 代码中使用 ```_T("")``` 这个宏来包裹字符串,其意思是通过不同的编译项,可以编译成ANSI版本 或者 Unicode版本, 如果是L 宏。则只能编译成Unicode版本。使用这两个宏要引用 tchar.h 头文件。 然后编译的时候要带上 ``` /D UNICODE /D _UNICODE ``` 这两个编译选项,才会生效,否则运行程序遇到中文会乱码