一直比较关注本质的东西。VC封装了很多,想了解一下比较麻烦。

先从了解WinMain()入口函数与WndProc()消息处理函数开始吧。

大气象

#include <windows.h>
#include <mmsystem.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); //声名消息处理函数(处理windows和接收windows消息)
//hInstance:系统为窗口分配的实例号,2和3忘了.4是显示方式
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
    static TCHAR szAppName[] = TEXT ("HelloWin") ; //窗体名
    HWND hwnd;//句柄
    MSG msg;//消息体
    WNDCLASS wndclass;//这义一个窗体类实例
    //设置窗体参数
    wndclass.style = CS_HREDRAW | CS_VREDRAW ; //样式
    wndclass.cbClsExtra   = 0 ;
    wndclass.cbWndExtra   = 0 ;
    wndclass.hInstance = hInstance ;//窗体实例名,由windows自动分发
    wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;//显示上面的图标titlte
    wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;//窗口光标
    wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;//背景刷
    wndclass.lpszMenuName=NULL;
    wndclass.lpfnWndProc=WndProc;//设置窗体接收windws消息函数
    wndclass.lpszClassName= szAppName;//窗体类名
    if (!RegisterClass (&wndclass))//注册窗体类
    {
        MessageBox ( NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ;
        return 0 ;
    };
    //创建一个窗体。已分配内存。返回一个窗体句柄
    hwnd = CreateWindow( szAppName,      // window class name
        TEXT ("The Hello Program"),   // window caption
        WS_OVERLAPPEDWINDOW, // window style
        CW_USEDEFAULT,// initial x position
        CW_USEDEFAULT,// initial y position
        CW_USEDEFAULT,// initial x size
        CW_USEDEFAULT,// initial y size
        NULL, // parent window handle
        NULL, // window menu handle
        hInstance, // program instance handle
        NULL) ;
    ShowWindow (hwnd,iCmdShow);//显示窗口
    UpdateWindow (hwnd) ;//更新窗体
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage (&msg);//翻译消息并发送到windows消息队列
        DispatchMessage (&msg) ;//接收信息
    }
    return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)//消息的处理程序

{

HDC                   hdc ;

PAINTSTRUCT ps ;

RECT          rect ;

switch (message)

{

case WM_CREATE:
        //PlaySound(TEXT("HelloWin.wav"),NULL,SND_FILENAME|SND_ASYNC);

return 0 ;

case   WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;
        TextOut(hdc,0,0,"大气象",strlen("大气象"));
        EndPaint (hwnd, &ps) ;

return 0 ;

case   WM_DESTROY:

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

新建Visual C++空项目。在源文件目录里新建一个cpp文件。

输入以上代码,直接运行。如图:

纯C++创建Windows窗体(理解WinMain()与WndProc())相关推荐

  1. C#创建Windows窗体应用程序实例6【ASCII码查询程序】

     都实例6了?你还不会创建项目?不会操作步骤?不会写代码?请进入下方链接学习吧! C#创建Windows窗体应用程序实例1https://blog.csdn.net/qq_45037155/artic ...

  2. C#创建Windows窗体应用程序实例1【姓名输入】

    创建Windows窗体应用程序的一般步骤 1.创建Windows窗体项目 2.创建用户界面 3.添加控件 4.创建处理控件事件的方法 5.将控件事件与事件处理方法关联 6.   运行和测试程序 具体步 ...

  3. C#创建Windows窗体应用程序实例9【菜单设计】

      都实例9了?你还不会创建项目?不会操作步骤?不会写代码?请进入下方链接学习吧! C#创建Windows窗体应用程序实例1https://blog.csdn.net/qq_45037155/arti ...

  4. C#创建Windows窗体应用程序实例4【大学选课】

    都实例4了?你还不会创建项目?不会操作步骤?不会写代码?请进入下方链接学习吧! C#创建Windows窗体应用程序实例1https://blog.csdn.net/qq_45037155/articl ...

  5. C#创建Windows窗体应用程序实例5【时钟】

     都实例5了?你还不会创建项目?不会操作步骤?不会写代码?请进入下方链接学习吧! C#创建Windows窗体应用程序实例1https://blog.csdn.net/qq_45037155/artic ...

  6. C# 使用VS创建Windows窗体应用程序

    一.一个解决方案里面可以有多个项目文件 1.先创建一个主的用来启动的项目,打开VS,点击Windows窗体应用 2. 输入名称 3 点击创建成功 4.应用程序的入口函数 二.添加辅助的项目 1.右键解 ...

  7. Windows编程第一课:纯手工创建一个窗体

    第一节 创建应用程序主窗体 1 创建消息处理函数 LRESULT CALLBACK fWinProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara ...

  8. 第02篇:C#星夜拾遗之Windows窗体

    尽管人们一直说高手都用编写控制台程序,尽管企业都在使用基于Web的应用程序,但我这里依然选择了从Windows窗体入门.原因很简单,我喜欢WinForm应用程序完美的可视化界面. 创建Windows窗 ...

  9. 演练:在 Windows 窗体中承载 Windows Presentation Foundation 复合控件 【转载】

    http://msdn.microsoft.com/zh-cn/library/ms745781.aspx 更新:2007 年 11 月 本演练演示如何创建 WPF 复合控件,并通过使用 Elemen ...

最新文章

  1. 你是一个职业的页面重构工作者吗?
  2. 北航成AAAI 2021最大赢家,两篇一作斩获最佳论文、提名奖,研究皆与Transformer相关...
  3. POJ 3621 最优比率生成环
  4. 什么是编程语言,大神教你为什么要学C语言?
  5. 攻击 | 神奇的木马(虚拟机模拟木马入侵)
  6. Android Jetpack 之 ViewModel
  7. TCP/IP网络协议栈面试经典题目
  8. 可视化利器 —— t-SNE(matlab toolbox 的使用与解释)
  9. Java List retainAll 记录坑
  10. Spring的事务传播机制
  11. 智能柜子锁方案开发,蓝牙智能防盗。
  12. java开发基础(面试必备)
  13. 日期对象(Date)操作 getMonth()方法
  14. PHP 网页调用本地exe程序实例
  15. 射频(RF)基本理论:定义、特性、调制、扩频
  16. A题 转换AV号(avtobv)
  17. .playground文件_部署可教学机器:Circuit Playground Express,Arduino,P5.js,TinyUSB
  18. app毕业设计开题报告题目Uniapp实现的Android的校园二手商品交易平台计算机毕业论文
  19. 电商项目使用优惠券退款的权重算法
  20. 微信小程序上拉刷新下拉加载

热门文章

  1. html 布局满屏,CSS全屏布局的5种方式
  2. 初中计算机ppt教案,初中计算机ppt教案.doc
  3. java log4jhelper_log4j的使用
  4. nfs服务器实现文件共享,NFS服务器及Samba服务配置实现文件共享(示例代码)
  5. java项目启动时登录,Java项目启动时报错解决方法
  6. 库存转换是什么意思_为什么要用WMS系统?WMS能带来哪些价值
  7. 我的天,强化学习还能用在自动驾驶领域?
  8. 读书到底为了什么,读研到底值不值?
  9. linux等陆不上ftp,vsftp连接不上解决方法
  10. 【高速接口-RapidIO】Xilinx SRIO IP 核详解