windows SDK程序的模板

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;//窗口函数声明

//WinMain函数是所有Windows应用程序的入口,类似c语言中的main函数其功能是完成一系列的定义和初始化,并产生消息循环。
int APIENTRY WinMain(HINSTANCE hInstance,     //应用程序当前实例句柄
		     HINSTANCE hPrevInstance, //应用程序其他实例句柄
		     LPSTR lpCmdLine,         //指向函数命令行参数的指针
		     int nCmdShow             //应用程序开始执行时窗口显示方式的整数值标志
				    )
				   
{
	
	//初始化,初始化包括窗口类的定义、注册、创建窗口实例和显示窗口四部分
	
	HWND hwnd;        //定义窗口类结构句柄
	
	MSG Msg;	      //定义消息结构变量		
	
	WNDCLASS wndclass;//定义窗口类结构变量


		
	    //定义窗口类的各种属性
		
	    wndclass.style =CS_HREDRAW|CS_VREDRAW; //改变窗口大小则重画
	    wndclass.lpfnWndProc=WndProc;          //定义窗口处理函数
	    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="windows窗口创建";       //窗口类名



	
	    //以下是窗口类的注册-----------Windows系统本身提供部分预定义的窗口类,程序员也可以自定义窗口类,窗口类必须先注册后使用。
		
		if(!RegisterClass(&wndclass)) //如果注册失败 发出警告
		
			return false;



		//创建窗口
	    hwnd=CreateWindow( "windows窗口创建",  //窗口类名,创建窗口时一定要基于我们已经注册过的窗口类名,即"窗口"。
		  
							"windows窗口创建",  //窗口标题名
									  
							WS_OVERLAPPEDWINDOW,  //窗口的风格 重叠式窗口
									  
							CW_USEDEFAULT,CW_USEDEFAULT, //窗口左上角坐标默认值
									  		  
							CW_USEDEFAULT,CW_USEDEFAULT, //窗口的高和宽为缺省值
									  		  
							NULL,  //此窗口无父窗口
									  
							NULL,  //此窗口无子菜单
									  
							hInstance,  //创建此窗口的应用程序的当前句柄
									  
							NULL  //不使用该值,此窗口无创建参数
							);
	  //显示窗口
	  ShowWindow(hwnd,nCmdShow);
	  
	  //更新和绘制窗口用户区	  
	  UpdateWindow(hwnd);

	  //消息循环
	  while(GetMessage(&Msg,NULL,0,0))  //GetMessage()函数是从调用线程的消息队列中取出一条消息;对于每一个应用程序窗口线程,操作系统都会为其建立一个消息队列,当我们的窗口有消息时(即所有与这个窗口线程相关的消息),操纵系统会把这个消息放到该线程的消息队列当中,我们的窗口程序就通过这个GetMessage()函数从自己的消息队列中取出一条一条具体的消息并进行响应操作。
		  
	  {
		  
		 TranslateMessage(&Msg);//对"消息对"的转化,如对键盘的WM_KEYDOWN和WM_KEYUP消息对转化为WM_CHAR消息,并且将转换后的新消息投递到我们的消息队列中去,这个转化操作不会影响原来的消息,只会产生一个新的消息。
		  
		 DispatchMessage(&Msg);//DispatchMessage()函数是将我们取出的消息传到窗口的回调函数去处理;可以理解为该函数将取出的消息路由给操作系统,然后操作系统去调用我们的窗口回调函数对这个消息进行处理。
		  
	  }
	  
	  return Msg.wParam; //消息循环结束 即程序结束时 将信息返回系统
	  
}

//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message, WPARAM wParam,LPARAM lParam)
					  
{
		//根据消息队列值转相应的消息处理
	    switch(message)
		{
		
			case WM_PAINT:
							HDC hdc;
							PAINTSTRUCT ps;
							hdc=BeginPaint(hwnd,&ps);
                                                        TextOut(hdc,10,20,"哈哈,Windows编程创建的窗口!",28);
							EndPaint(hwnd,&ps);
							return 0;


			case WM_DESTROY:
		                                        PostQuitMessage(0);
							return 0;

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值