WindowsApi学习笔记-创建一个简单的窗口

#include <windows.h>

LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数的函数原型

int APIENTRY WinMain(                               //APIENTRY是__stdcall的宏定义
					 HINSTANCE hInstance,           //本模块的实例句柄
					 HINSTANCE hPrevInstance,       //Win16留下的废物
					 LPSTR lpCmdLine,               //命令行参数
					 int nCmdShow                   //主窗口初始化时的现实形式
					 )
{
	char szClassName[] = "MainClass";
	WNDCLASSEX wndclass;   //用来描述主窗口的结构
	wndclass.cbSize = sizeof(wndclass);  //结构的大小
	wndclass.style = CS_HREDRAW|CS_VREDRAW; //如果窗口大小,横向改变和竖向改变都会重画窗口
	wndclass.lpfnWndProc = MainWndProc;//窗口函数指针
	wndclass.cbClsExtra = 0;//没有额外的类内存
	wndclass.cbWndExtra = 0;//没有额外的窗口内存
	wndclass.hInstance = hInstance;//实例句柄
	wndclass.hIcon = ::LoadIcon(NULL,IDI_APPLICATION);//使用预定义图标
	wndclass.hCursor = ::LoadCursor(NULL,IDC_ARROW);//使用预定义光标
	wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);//使用白色背景画刷
	wndclass.lpszMenuName = NULL;//不指定菜单
	wndclass.lpszClassName = szClassName;//窗口类的名称
	wndclass.hIconSm = NULL;//没有类的小图标

	::RegisterClassEx(&wndclass);//注册这个窗口类

	HWND hwnd = ::CreateWindowEx(
		0,//扩展样式
		szClassName,//类名
		"My First Window",//窗口名。标题
		WS_OVERLAPPEDWINDOW,//窗口风格
		CW_USEDEFAULT,//初始X坐标
		CW_USEDEFAULT,//初始Y坐标
		CW_USEDEFAULT,//宽度
		CW_USEDEFAULT,//高度
		NULL,//父窗口句柄
		NULL,//菜单句柄
		hInstance,//实例句柄
		NULL//用户数据
		);
	if(hwnd == NULL)
	{
		::MessageBox(NULL,"创建窗口出错","系统提示",MB_OK);
	}
	::ShowWindow(hwnd,nCmdShow);//显示窗口
	::UpdateWindow(hwnd);//刷新窗口
	MSG msg;
	while(::GetMessage(&msg,NULL,0,0))
	{
		::TranslateMessage(&msg);//转换为键盘消息
		::DispatchMessage(&msg);//将消息发送到相应的窗口函数
	}
	return msg.wParam;//当GetMessage返回FALSE时程序结束
}

LRESULT CALLBACK MainWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	char szText[] = "最简单的窗口程序";
	switch(message)
	{
	case WM_PAINT:
		{
			HDC hdc;
			PAINTSTRUCT ps;
			hdc = ::BeginPaint(hwnd,&ps);//使无效的客户区变的有效,并取得设备环境句柄
			::TextOut(hdc,10,10,szText,strlen(szText));//输出文本
			::EndPaint(hwnd,&ps);
			return 0;
		}
	case WM_DESTROY:
		{
			::PostQuitMessage(0);//向消息队列投递一个WM_QUIT消息,促使GET MESSAGE函数返回0,结束消息循环
			return 0;
		}
	}
	return ::DefWindowProc(hwnd,message,wParam,lParam);
}
时间: 2024-10-22 16:50:33

WindowsApi学习笔记-创建一个简单的窗口的相关文章

Ultradev实例教程:3.7 创建一个简单的查询

创建|教程 第三章:应用数据库创建动态网页 第七节:创建一个简单的查询 其实查询创建的原理与我们在上面学到的数据编辑原理是一样的,都是先从第一个页面传递一个值给第二个页面,然后第二个页面根据这个传递过去的值取出相应的纪录,再做以相应的处理,如显示.编辑.删除.所不同的是传递方式.上一节我们是通过地址连接来传递值,而我们知道一般查询都是通过一个表单填写数据然后提交的. 好,就让我们来看看具体的创建过程. 首先我们要创建一个用户能够输入查询内容的页面.如图,我们插入一个名为Search的类型为Tex

《精通 ASP.NET MVC 4》----2.4 创建一个简单的数据录入应用程序

2.4 创建一个简单的数据录入应用程序 精通 ASP.NET MVC 4 本章的其余部分将通过建立一个简单的数据录入应用程序,来考察MVC的更多基本特性.本节将分步进行,目的是演示MVC的运转,因此会跳过对幕后工作原理的一些解释.不用担心--在后面的章节中还会重新深入地讨论这些论题. 2.4.1 设置场景 设想一个朋友要主办一个"新年除夕晚会",需要创建一个Web网站,以便让被邀请人进行RSVP(电子回复).这个网站需要以下四个关键特性: 一个显示此晚会信息的主页: 一个可以用来进行R

使用C# Builder创建一个简单的ASP.NET应用程序

一般网站建设通常要求开发人员做后台的程序设计,前面有专业的美工做界面设计.虽然有时候开发人员也会做些界面设计,但是通常都无法达到专业的要求.在以前的ASP中,由于代码和HTML页面语言混杂在一起,这就使得网站的建设变得相当的困难.但在ASP.NET中,这种情况完全改变了.下面就用C# Builder创建一个简单的ASP.NET应用程序. 打开C# Builder,选择 File>New>other-菜单项,你将会看到下面的窗口: 我们选择C# ASP Projects,你就会看到右边有3种可供

《精通 ASP.NET MVC 5》----2.4 创建一个简单的数据录入应用程序

2.4 创建一个简单的数据录入应用程序 本章的其余部分将通过建立一个简单的数据录入应用程序来考查MVC的更多基本特性.本小节打算分步进行,目的是演示MVC的运用,因此会跳过对幕后工作原理的一些解释.但不必担心,在后面的章节中会重新深入地讨论这些论题. 2.4.1 设置场景 假设一个朋友决定举行一个"新年除夕晚会",于是她请笔者为其创建一个Web应用程序,以便让受邀人进行电子回复(RSVP).她的要求有以下4个关键特性. 一个显示此晚会信息的首页. 一个可以用来进行电子回复(RSVP)的

tomcat-新手学习,创建一个网络项目时遇到的的tomca问题,谢谢指导

问题描述 新手学习,创建一个网络项目时遇到的的tomca问题,谢谢指导 新手学习中,当我在用eclipes ee 4.5 时,如果数据库打开的话,tomcat 8.0总是出现已被占用,出现这样的信息:Port 8080 required by Tomcat v8.0 Server at localhost is already in use. The server may already be running in another process, or a system process may

angularJS学习笔记:创建自定义angularJS指令基础篇

AngularJS提供了很多指令可以帮助我们操作DOM.处理事件.数据绑定.绑定控制器与作用域(ngView)等等.例如ngClick.ngShow.ngHide.ngRepeat以及其它很多AngularJS核心的指令都可以帮助我们很轻松的使用这个框架. 虽然内置的指令已经覆盖了大部分的使用场景,但在实际使用中为了简化操作或组件重用等我们经常需要创建自己的指令.在这个系列的文章中我将一步步带你了解AngularJS指令是如何工作的,以及如何开始使用/创建它们. 在这个系列的文章中我们假定你已经

用delphi6+Apache 开发动态网站(创建一个简单的网页)

                 用delphi6+Apache 开发动态网站(一)                  -------创建一个简单的网页       随着Internet 的飞速发展,动态网页的开发方法五花八门,有ASP,JSP,PHP,CGI等等,其中web server主要 集中在IIS,Apache等上,MS 的IIS 以其强大的功能吸引了很多的开发者,ASP 是IIS 上用的最多的网页开发 方法,可是ASP 对开发非MS 产品的数据库程序时,简直就是一场恶梦,同时IIS

用EclipseME0.5.5创建一个简单的J2ME程序

程序|创建 用EclipseME0.5.5创建一个简单的J2ME程序 上一篇文章<如何在Eclipse3.0.1上安装EclipseME 0.5.5版本>,我们已经讲了如何在Eclipse3.0.1上安装Eclipse程序. 今天我们就要用他来创建我们的第一个程序.绝大多数程序教程的第一个程序,都叫做HelloWorld.那么我们就来编一个HelloWorld程序. 1, 文件2, 新建项目3, 选择J2ME,J2ME Midlet Suite4, 输入项目名称:MyFirstJ2ME5, 选

SharePoint中创建一个简单的Web Part 部件

标准的Web部件有时候可以非常强大,可以执行许多函数.本文主要讲解如何使用Visual Studio 创建一个简单的Web部件. 1. 打开VS,点击文件----新建项目. 2. 选择空白SharePoint项目.命名SmallvilleWebPartProject,点击确定.选择部署为场解决方案. 3. 右击项目添加新项目. 4. 选择Web部件. 5. 命名CustomerInformation,点击添加. 6. 右击新的Web部件项目,选择添加类,命名CustomerData,点击确定.