windows SDK程序的模板

来源:互联网 发布:pychram软件运行环境 编辑:程序博客网 时间:2024/05/22 00:47
#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
原创粉丝点击