首页 > 编程语言 >MFC视频教学第一课,做一个简单的界面,理解应用程序和操作系统之间的消息传递机制

MFC视频教学第一课,做一个简单的界面,理解应用程序和操作系统之间的消息传递机制

时间:2023-08-27 11:35:31浏览次数:37  
标签:MFC hwnd WM 索广宇 break 第一课 wndclass 消息传递 NULL


 

#include <windows.h>
#include <stdio.h>
 
LRESULT CALLBACK WinSunProc(
       HWND hwnd,
       UINT uMsg,
       WPARAM wParam,
       LPARAM lParam
);
 
//WinMain是操作系统调用的,是系统的入口函数
int WINAPI WinMain(
       HINSTANCE hInstance,//当前应运程序的实例号
       HINSTANCE hPrevInstance,
       LPSTR lpCmdLine,//字符串类型的指针,命令行参数
       int nCmdShow//程序窗口显示的状态
)
{
       //创建一个窗口类
       WNDCLASS wndclass;
       wndclass.cbClsExtra=0;//为类分配的额外内存,一般置0
       wndclass.cbWndExtra=0;//为窗口分配的额外内存,一般置0
       wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//窗口的背景
       wndclass.hCursor=LoadCursor(NULL,IDC_CROSS);//鼠标的类型
       wndclass.hIcon=LoadIcon(NULL,IDI_ERROR);//图标的类型
       wndclass.hInstance=hInstance;//当前应运程序的实例号
       wndclass.lpfnWndProc=WinSunProc;//指向窗口过程函数的指针
       wndclass.lpszClassName="Winxin2010";//类的名字
       wndclass.lpszMenuName=NULL;//菜单的名字
       wndclass.style=CS_HREDRAW | CS_VREDRAW;//窗口特性的组合
 
       //注册一个类
       RegisterClass(&wndclass);
 
       //创建一个窗口
       HWND hwnd;
       hwnd=CreateWindow("Winxin2010","索广宇自学MFC",WS_OVERLAPPEDWINDOW,
              100,100,600,400,NULL,NULL,hInstance,NULL);
 
       //显示及更新窗口
       ShowWindow(hwnd,SW_SHOWNORMAL);
       UpdateWindow(hwnd);
 
       //消息循环
       MSG msg;
       while(GetMessage(&msg,NULL,0,0))//GetMessage()的作用是从消息队列中取出消息
       {
              TranslateMessage(&msg);
              DispatchMessage(&msg);
       }
       return 0;
}
LRESULT CALLBACK WinSunProc(
       HWND hwnd,
       UINT uMsg,
       WPARAM wParam,
       LPARAM lParam
)
{
       switch(uMsg)
       {
       case WM_CHAR:
              char szChar[20];
              sprintf(szChar,"char is %d",wParam);
              MessageBox(hwnd,szChar,"索广宇加油",MB_OK);
              break;
       case WM_LBUTTONDOWN:
              MessageBox(hwnd,"Mouse Click!","索广宇加油",MB_OK);
              HDC hdc;
              hdc=GetDC(hwnd);
              TextOut(hdc,0,50,"索广宇爱邢飘!",strlen("索广宇爱邢飘!"));
              ReleaseDC(hwnd,hdc);
              break;
       case WM_PAINT:
              HDC hDC;
              PAINTSTRUCT ps;
              hDC=BeginPaint(hwnd,&ps);
              TextOut(hDC,0,0,"执子之手,与子协老!",strlen("执子之手,与子协老!"));
              EndPaint(hwnd,&ps);
              break;
       case WM_CLOSE:
              if(IDYES==MessageBox(hwnd,"真的要退出吗?","索广宇加油",MB_YESNO))
              {
                     DestroyWindow(hwnd);
              }
              break;
       case WM_DESTROY:
              PostQuitMessage(0);
              break;
       default:
              return DefWindowProc(hwnd,uMsg,wParam,lParam);
       }
       return 0;
}

标签:MFC,hwnd,WM,索广宇,break,第一课,wndclass,消息传递,NULL
From: https://blog.51cto.com/u_5173797/7251994

相关文章

  • Java的第一课,特性和优势
    Java的特性和优势简单性面向对象可移植性高性能分布式动态性多线程安全性健壮性以上特性和优势会在以后的博客中逐一展示,尽请期待! ......
  • HarmonyOS第一课_构建更加丰富的页面
    管理组件状态概述组件内的状态管理:@State从父组件单向同步状态:@Prop与父组件双向同步状态:@Link跨组件层级双向同步状态:@Provide和@Consume概述在应用中,界面通常都是动态的。如图1所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起......
  • MFC-TeeChart图标控件
    OCX组件下载:链接:https://pan.baidu.com/s/1yOEbV4NBFdkusK_3CilLxA提取码:6666   系统注册下载之后,看安装说明       ......
  • 报名开启 | HarmonyOS第一课“营”在暑期系列直播
    <HarmonyOS第一课>2023年再次启航!特邀HarmonyOS布道师云集华为开发者联盟直播间聚焦HarmonyOS4版本新特性邀您一同学习赢好礼!你准备好了吗? ↓↓↓预约报名↓↓↓https://url.cloud.huawei.com/n1Umrez5sY   ......
  • 深入解析 Kafka 消息传递机制及其在 Spring Boot 中的应用
    Kafka作为一款高性能的分布式消息中间件,被广泛用于构建实时数据流处理和事件驱动的架构。在本篇博客中,我们将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中使用Kafka进行消息传递。1.Kafka消息传递机制Kafka使用发布-订阅模型来实现消息传递。核心......
  • Kafka 消息传递机制与 Spring Boot 集成实践
    Kafka作为一款强大的分布式消息中间件,被广泛应用于实时数据流处理和事件驱动的架构。在本篇博客中,我们将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中集成和使用Kafka进行消息传递。1.Kafka消息传递机制概述Kafka使用发布-订阅模型来实现高效的消......
  • Kafka 消息传递原理及在 Spring Boot 中的应用实践
    Kafka作为一款强大的分布式消息中间件,在实时数据流处理和事件驱动架构中扮演着重要角色。在本篇博客中,我们将深入探讨Kafka的消息传递原理,并结合SpringBoot框架,演示如何在应用中使用Kafka进行消息传递。1.Kafka消息传递原理Kafka采用发布-订阅模型实现消息传递,核心概念......
  • Kafka 消息传递机制深度解析与 Spring Boot 集成实践
    Kafka作为一款强大的分布式消息中间件,在实时数据流处理和事件驱动架构中扮演着关键角色。在本篇博客中,我们将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中集成和使用Kafka进行消息传递。1.Kafka消息传递机制剖析Kafka采用发布-订阅模型实现高效的......
  • 深度解析 Kafka 消息传递机制与 Spring Boot 集成实践
    Kafka作为一款强大的分布式消息中间件,在实时数据流处理和事件驱动架构中具有重要地位。本篇博客将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中集成和利用Kafka进行消息传递。1.Kafka消息传递机制深入剖析Kafka采用发布-订阅模型来实现高效的消息......
  • MFC练习4:自动关机程序(恶搞版)
    用MFC实现了一个自动关机程序(恶搞版),需要输入“作者真帅”,不然会在30s后自动关机。程序涉及编辑框的输入输出、定时器的使用,按钮事件的添加、弹窗提示等,本身很简单。自动关机部分参考了网上的代码,在Win10系统上验证正常。一、界面展示这是一个MFC对话框类型的程序,整体界面如下。......