首页 > 编程语言 >C++开发原生WIN32程序

C++开发原生WIN32程序

时间:2023-02-14 06:00:09浏览次数:52  
标签:原生 wc hwnd C++ WIN32 HWND msg return NULL

VS2019 文件-新建-项目-Windows桌面向导(C++)-桌面应用程序 空项目

项目属性-高级-字符集未设置

程序内所有字符串用TEXT宏包裹

 1 #include <windows.h>
 2 
 3 LONG WINAPI WndProc(HWND, UINT, WPARAM, LPARAM);
 4 
 5 int WINAPI WinMain(
 6     _In_ HINSTANCE hInstance,
 7     _In_opt_ HINSTANCE hPrevInstance,
 8     _In_ LPSTR lpCmdLine,
 9     _In_ int nShowCmd)
10 {
11     WNDCLASS wc;
12     HWND hwnd;
13     MSG msg;
14 
15     wc.style = 0;
16     wc.lpfnWndProc = (WNDPROC)WndProc;
17     wc.cbClsExtra = 0;
18     wc.cbWndExtra = 0;
19     wc.hInstance = hInstance;
20     wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
21     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
22     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
23     wc.lpszMenuName = NULL;
24     wc.lpszClassName = "MyWndClass";
25 
26     RegisterClass(&wc);
27     hwnd = CreateWindow("MyWndClass", "SDK Application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL, hInstance, NULL);
28     ShowWindow(hwnd, nShowCmd);
29     UpdateWindow(hwnd);
30 
31     while (GetMessage(&msg, NULL, 0, 0))
32     {
33         TranslateMessage(&msg);
34         DispatchMessage(&msg);
35     }
36     return msg.wParam;
37 }
38 
39 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
40 {
41     PAINTSTRUCT ps;
42     HDC hdc;
43     switch (message)
44     {
45     case WM_PAINT:
46         hdc = BeginPaint(hwnd, &ps);
47         Ellipse(hdc, 0, 0, 200, 100);
48         EndPaint(hwnd, &ps);
49         return 0;
50     case WM_DESTROY:
51         PostQuitMessage(0);
52         return 0;
53     }
54     return DefWindowProc(hwnd, message, wParam, lParam);
55 }

 

标签:原生,wc,hwnd,C++,WIN32,HWND,msg,return,NULL
From: https://www.cnblogs.com/kaling/p/17118457.html

相关文章

  • R语言原生管道绘图
    前言最近写论文的时候又一次用到了R。这次我是对Java有一定程度了解后再次转向R,才真正认识到R这门语言在统计编程和数据可视化领域的优雅和快速。首先可以看一段Java的st......
  • Making a Plugin System with c++
      cplusplus.comTUTORIALS REFERENCE ARTICLES FORUM signup login[Legacyversion]C++TutorialsReferenceArticlesForum......
  • 【C++复习】运算符重载中的特殊运算符
    无法被重载类属关系运算符 .成员指针运算符 .*作用域分辨符 ::三目运算符 ?:只能通过成员函数重载赋值运算符=方括号[]圆括号()指向结构体成员运算符->......
  • 【C++复习】同名函数判断条件(重载,隐藏,覆盖)
    1、重载以下条件要全部满足:函数名相同以下条件满足其1:函数形参数目不同函数形参类型不同注意:不看返回值调用形式要不同//下面两个函数不能重载fun(inta,......
  • C/C++多线程实现龟兔赛跑
    题⽬:⻳兔赛跑跑道距离50⽶乌⻳(⼀个线程)每秒3⽶不睡觉;兔⼦(⼀个线程)每秒5⽶每跑15⽶睡2秒钟。请模拟⽐赛情况:#include<iostream>#include<thread>#include<......
  • [C++] thread未定义
    [C++]无法识别thread在已经包括thread头文件和使用了std命名空间的情况下编译器依旧无法使用C++11的thread类,大概率是因为使用的MinGW的线程模型为win32而非POSIX。解决......
  • C++构造和析构
    category:cpp参考书籍:C++PrimerEssentialC++编译器:gcc/g++C++构造和析构构造函数名字和类名相同没有返回值构造函数是用来构造对象,构造对象时候必定调用构造函数不......
  • 【C++复习】运算符优先级(简)
    不同优先级的运算符混在一起,就根据优先级算相同优先级的运算符混在一起,就看它们的结合性(这里不谈)1、运算符有哪些?单目运算符*++自增,有前置和后置--自减,有前置和后置......
  • C++ 修改防火墙firewall设置(Linux、Ubuntu、CentOS)
    1、简介1.1Ubuntuhttps://ubuntu.com/download/desktopUbuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“......
  • Calling C++ Code From Go With SWIG
    http://zacg.github.io/blog/2013/06/06/calling-c-plus-plus-code-from-go-with-swig/ RecentlywhileworkingonaGobasedprojectIneededtousesomefunctio......