首先注册了窗口类,然后创建了一个窗口,创建窗口时指定的窗口的属性和窗口消息的处理函数。函数消息的处理函数大多调用系统默认函数来处理。

 #include<windows.h>

 /*全局变量*/
HINSTANCE hinst; /*函数声明*/
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM); /*显示一个窗口*/
int WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASSEX wcx;//窗口类
HWND hwnd;//窗口句柄
MSG msg;//消息
BOOL fGotMessage;//是否获取消息
hinst=hInstance;//应用程序实例句柄,保存为全局变量
//填充窗口的数据结构
wcx.cbSize=sizeof(wcx);//结构体的大小
wcx.style=CS_HREDRAW | CS_VREDRAW;//样式:大小改变时重绘界面
wcx.lpfnWndProc=MainWndProc;//消息处理函数
wcx.cbClsExtra=;//不使用类内存
wcx.cbWndExtra=;//不使用窗口内存
wcx.hInstance=hInstance;//所属应用程序的实例句柄
wcx.hIcon=LoadIcon(NULL,IDI_APPLICATION);//图标:默认
wcx.hCursor=LoadCursor(NULL,IDC_ARROW);//光标:默认
wcx.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//背景:白色
wcx.lpszMenuName=NULL;//菜单:不使用
wcx.lpszClassName="MainWClass";//窗口类名
wcx.hIconSm=(HICON)LoadImage(hInstance,
MAKEINTRESOURCE(),
IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
LR_DEFAULTCOLOR); //注册窗口类
if(!RegisterClassEx(&wcx))
{
MessageBox(NULL,TEXT("注册窗口失败"),NULL,MB_OK);
return ;
} //创建窗口
hwnd=CreateWindow(
"MainWClass",//window name
"CH 2-3",//window title
WS_OVERLAPPEDWINDOW,//窗口样式
CW_USEDEFAULT,//水平位置X:默认
CW_USEDEFAULT,//水平位置Y:默认
CW_USEDEFAULT,//width:默认
CW_USEDEFAULT,//high:默认
(HWND)NULL,//父窗口:无
(HMENU)NULL,//菜单:使用窗口类的菜单
hInstance,//应用程序实例句柄
(LPVOID)NULL);//窗口创建时数据:无 if(!hwnd)
{
MessageBox(NULL,TEXT("创建窗口失败"),NULL,MB_OK);
return ;
}
//显示窗口
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
//消息循环
while((fGotMessage=GetMessage(&msg,(HWND)NULL,,))!= && fGotMessage!=-)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/*MainWndProc****************************
*消息处理函数
*对所有消息采取默认处理函数
*****************************************/
LRESULT CALLBACK MainWndProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_DESTROY:
ExitThread();
return ;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
}

[WinAPI] API 4 [注册][创建][消息][第一个框架类窗口]的更多相关文章

  1. 一个可以代替冗长switch-case的消息分发小框架

    在项目中,我需要维护一个应用层的字节流协议.这个协议的每条报文都是一个字节数组,数组的头两个字节表示消息的传送方向,第三.四个字节表示消息ID,也就是消息种类,再往后是消息内容.时间戳.校验码等……整 ...

  2. Win32编程API 基础篇 -- 4.消息循环

    消息循环 理解消息循环 为了编写任何即使是最简单的程序,了解windows程序的消息循环和整个消息发送结构是非常有必要的.既然我们已经尝试了一点消息处理的东西,我们应该对整个程序有更深入的理解,如果你 ...

  3. 第三节:Creating API Endpoints (创建API路由)

    对于这篇文章的标题,其实,直译就是创建api端点.但是,真的很难懂,我还是写为API路由吧.每篇,文章,我都会全部去进行实践操作,力求写一个好点的教程. 本文英文地址-->https://git ...

  4. ABP示例程序-使用AngularJs,ASP.NET MVC,Web API和EntityFramework创建N层的单页面Web应用

    本片文章翻译自ABP在CodeProject上的一个简单示例程序,网站上的程序是用ABP之前的版本创建的,模板创建界面及工程文档有所改变,本文基于最新的模板创建.通过这个简单的示例可以对ABP有个更深 ...

  5. SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介、创建消息生产者、创建消息消费者、自定义消息通道、分组与持久化、设置 RoutingKey)

    1.概念:SpringCloudStream 2.具体内容 2.1.SpringCloudStream 简介 SpringCloudStream 就是使用了基于消息系统的微服务处理架构.对于消息系统而 ...

  6. Web API 2 入门——创建ASP.NET Web API的帮助页面(谷歌翻译)

    在这篇文章中 创建API帮助页面 将帮助页面添加到现有项目 添加API文档 在敞篷下 下一步 作者:Mike Wasson 创建Web API时,创建帮助页面通常很有用,以便其他开发人员知道如何调用A ...

  7. Android开发之 Windows环境下通过Eclipse创建的第一个安卓应用程序(图文详细步骤)

    第一篇  windows环境下搭建创建的第一个安卓应用程序 为了方便,我这里只采用了一体包进行演示. 一.下载安卓环境的一体包. 官网下载:安卓官网(一般被墙了) 网盘下载: http://yunpa ...

  8. google maps js v3 api教程(1) -- 创建一个地图

    原文地址 google maps javascript官方文档:https://developers.google.com/maps/documentation/javascript/ 在创建地图之前 ...

  9. 译MassTransit 创建消息消费者

    创建消息消费者一个消息消费者是一个 可以消费一个或多个消息类型的类,指定IConsumer<T>接口,T为消息类型 public class UpdateCustomerConsumer ...

随机推荐

  1. Mosquitto-Ubuntu 14.04快速安装问题解决

    Mosquitto是一个轻量级的MQTT Broker,支持很多种系统. 下载与安装:http://mosquitto.org/download/ 注意:由于客户端paho工程进展较快,目前需要使用最 ...

  2. gdb调式

    1.PCB版的相应目录下执行命令: gdbserver 10.18.13.84:5555 DvdPlayer 2.linux操作系统执行:(如果是android找到android项目路径下的gdb)m ...

  3. java去中文

    java 去中文 package a.b; public class TrimCNTool { public static boolean checkCNChar(char oneChar) { if ...

  4. Selenium2+python自动化26-js处理内嵌div滚动条

    前言 前面有篇专门用js解决了浏览器滚动条的问题,生活总是多姿多彩,有的滚动条就在页面上,这时候又得仰仗js大哥来解决啦. 一.内嵌滚动条 1.下面这张图就是内嵌div带有滚动条的样子,记住它的长相.

  5. Centos7 Apache 2.4.18编译安装

    安装环境:CentOS Linux release 7.0.1406 (Core) 0x01 到官网http://httpd.apache.org/download.cgi#apache24下载apa ...

  6. 10 个强大的开源 Web 流量分析工具(转帖)

    Web 流量分析工具多不胜数,从 WebTrends 这样专业而昂贵的,到 Google Analytics 这样强大而免费的,从需要在服务器端单独部署的,到可以从前端集成的,不一而足.本文收集并介绍 ...

  7. AngularJs 返回上一页

    html <script src="lib/angular/angular-1.4.9/angular.js"></script> <script s ...

  8. AIX网络性能优化简介

    在AIX 中,网络性能的优化可从以下几方面进行: 网络内存(network memory)的调整 socket 缓冲区 (socket buffer) 的调整 网络接口(network interfa ...

  9. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  10. C# 基础(6)--Winform

    WinForm 简称,Windows Form ,调用.Net框架. Return 只是退出当前方法. MessageBox.Show("输入的Email地址是非法的!"); 把整 ...