最近在整理资料, 记得上学期间写得第一个程序是用汇编语言写了个类似HD-COPY的程序, 那个时候真是废寝忘食,程序正常运行后真得让人非常激动, 可惜太久远了找不到代码了, 那个时候有张3寸盘就很不错了,笔记本电脑更是买不起的。

今天重写了当初学习windows平台编程时的第一个程序, 贴出来做个纪念。

#include <windows.h>LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
BOOL InitApplication(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);HINSTANCE hInst;
HWND hWndMain;
char * pszClassName = "MainWndClass";// 应用入口
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{MSG msg;if (!InitApplication(hInstance))return FALSE;if (!InitInstance(hInstance, nCmdShow))return FALSE;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}BOOL InitApplication(HINSTANCE hInstance)
{WNDCLASS wc;wc.style = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc = (WNDPROC)MainWndProc;wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance = hInstance;wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);wc.hCursor = LoadCursor(NULL, IDC_ARROW);wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wc.lpszMenuName = NULL;wc.lpszClassName = pszClassName;//注册窗口类if (!RegisterClass(&wc)){return FALSE;}return TRUE;
}BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{hInst = hInstance;hWndMain = CreateWindow(pszClassName, "sample", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);if (!hWndMain){return FALSE;}ShowWindow(hWndMain, nCmdShow);UpdateWindow(hWndMain);return TRUE;
}//窗口消息处理函数
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{HDC hdc;PAINTSTRUCT ps;char * s = "hello the world";switch (message){case WM_PAINT:hdc = BeginPaint(hWnd, &ps);TextOut(hdc, 20, 10, s, strlen(s));EndPaint(hWnd, &ps);break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;
}

运行效果

基于Win32Api创建窗口程序相关推荐

  1. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数

    版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者"tingsking18"和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消 ...

  2. 用java创建窗口程序,创建窗口的应用程序

    创建窗口的应用程序 通过前面的基础知识的学习,已经对ctypes库的基本功能学会了使用,为了加强这种知识训练,以及运用刚学习的知识的快乐,我们来创建一个稍稍复杂一点的应用程序.这个应用程序是所有后面应 ...

  3. [server]基于uniapp创建小程序并上传照片到阿里云OSS

    先说在前头,最近忙,随想随记,所以有些博客写了一半就发了,后续会慢慢补齐的.抱歉! 前端使用uniapp开发,后台挂在阿里云.选uniapp开发的原因是我这边人手不够,同时也不想维护这么多客户端,故选 ...

  4. emwin之在中断服务程序中创建窗口的结果

    @2019-04-28 [小记] 使用emwin设计器生成的程序,将该窗口创建放在中断服务程序中出现奇怪现象,非死机但功能间歇性异常,将创建窗口程序放于普通程序中则工作正常 转载于:https://w ...

  5. Win32API 窗口程序的创建7大步骤

    Win32API 窗口程序的创建7大步骤 1 定义WinMain入口函数 2 定义窗口处理函数 WindowsProc(用来处理消息.有如公司业务处理,具体干活的人.) 3 注册窗口类 Registe ...

  6. 【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 )

    文章目录 一.导入头文件 二.桌面程序入口函数 三.注册窗口 四.创建窗口 五.显示窗口 六.完整代码示例 七.相关资源 基于 [OpenGL]一.Visual Studio 2019 创建 Wind ...

  7. 基于tkinter模块创建GUI程序(python)

    文章目录 前言 一.Tkinter是什么? 二.使用步骤 1.创建应用程序的主窗口对象(根窗口) 2.tkinter根窗口 3.组件拼图 4.Label标签 布局管理系统 5.pack布局管理器 6. ...

  8. C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案

    C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案 参考文章: (1)C#/.NET基于Topshelf创建Windows ...

  9. python PyQt5中文教程☞【第二节】PyQt5基本功能(创建窗口、应用程序图标、显示提示语、通过按钮关闭窗口、消息框(关闭窗口确认框)、窗口显示在屏幕中间【居中显示】)

    引用文章:http://code.py40.com/pyqt5/ 文章目录 简单的例子:创建一个小窗口 应用程序的图标 显示提示语 通过按钮关闭窗口 消息框(关闭窗口确认框) 窗口显示在屏幕的中间[居 ...

最新文章

  1. Nginx 限制百度等爬虫连接
  2. 组播穿越MPLS ×××+SSM
  3. 99% 的新移动恶意程序是针对 Android
  4. JavaScript 弱类型
  5. (JAVA学习笔记) 接口
  6. 对layoutInflater的理解
  7. 使自己的注意力集中方法
  8. 小程序中 swiper设置圆角在真机上不显示问题
  9. ajax表单图片,js中使用ajax上传一个带有图片的表单数据
  10. 阿里程序员发70多万年终奖表示略感失望,网友:不要的话请给我!
  11. [摘录]第10章 培养胜过对手的力量
  12. es search delete
  13. 计算机应用基础第3次平时作业,计算机应用基础第3次作业.doc
  14. 手把手教你c语言队列实现代码,通俗易懂超详细!
  15. 龙芯2F一体机硬盘修复
  16. 在银河麒麟V10操作系统上成功安装lnmp详细步骤
  17. apache Fop 2.1 支持中文
  18. 存算分离后,VxRail动态计算节点构建虚拟化更给力
  19. Matlab三维绘图------三维曲线图
  20. Vue引入vuetify框架你需要知道的几点

热门文章

  1. RHEL5.4在线调整磁盘分区大小
  2. 疼恨皇明热水器的无耻!
  3. vs.net 2005 中自定义模版项
  4. CodeForces - 1497D Genius(dp)
  5. CodeForces - 1405E Fixed Point Removal(线段树+思维)
  6. HDU - 4641 K-string(后缀自动机)
  7. CodeForces - 1200E Compress Words(字符串哈希)
  8. HihoCoder - 1828 Saving Tang Monk II(bfs+动态规划/bfs+优先队列)
  9. oracle存储过程多分支怎样写,如何写一个分段提交的存储过程啊
  10. HDU3113(工科数学分析之分解)