Windows编程基础

来源:互联网 发布:js删除数组中所有元素 编辑:程序博客网 时间:2024/05/17 02:48

区别:

DOS应用程序,按照函数顺序进行

Windows程序执行,按照事件发生顺序执行

 

执行顺序:

事件发生->对应的消息标识发送到消息队列->应用程序取出消息标识->相应处理消息响应

 

Windows编程方法:

1.API函数

2.MFC类函数库,对API进行加工组合,包装,方便使用

 

Windows应用程序结构

两大部分:

主函数 winMain():作用:建立窗口(创建,注册,显示)建立消息队列

窗口过程函数 WndProc():作用:窗口消息处理函数

 

结构

WinMain()

{

定义窗口类;

注册窗口类;

创建窗口类;

显示窗口类;

建立消息循环;

}

 

WndProc()

{

消息处理;

}

 

 

附注程序:


#include <windows.h>
#include <stdio.h>
//预定义回调函数
LRESULT CALLBACK wndproc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
//入口函数

int WINAPI WinMain(
       //H开头表示句柄
       HINSTANCE hInstance,//当前应用程序实例句柄
       HINSTANCE hPreInstance,//前一个应用程序实例句柄
       //LP开头表示指针
       LPSTR  lpCmdLine,//指向程序命令行参数的指针
       int   nCmdShow//窗口的初始状态
       )
{
 HWND hwnd;
 MSG msg;


 //define the window class
 WNDCLASS wndclass;
 //窗口式样
 wndclass.style=0;
 //指向窗口处理函数的指针,即为指向WndProc的指针
    wndclass.lpfnWndProc=wndproc;
 //窗口类结构分配的额外字节数
    wndclass.cbClsExtra=0;
 //本窗口类建立的窗口结构分配的额外字节数
    wndclass.cbWndExtra=0;
 //本窗口类的应用程序实例
    wndclass.hInstance=hInstance;
 //窗口类最小化时的图标
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
 //窗口类的光标
    wndclass.hCursor=LoadIcon(NULL,IDI_HAND);
 //窗口式样窗口类的背景颜色
    wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
 //窗口类的资源菜单
    wndclass.lpszMenuName=NULL;
 //窗口类名
    wndclass.lpszClassName="weixin";


    //Register CLASS
 if(!RegisterClass(&wndclass))
 {
 MessageBeep(0);
 return false;
 }

 //Create the window
 hwnd=CreateWindow(
           wndclass.lpszClassName,
     "hello window",
     WS_OVERLAPPEDWINDOW,
     CW_USEDEFAULT,
     CW_USEDEFAULT,
     CW_USEDEFAULT,
     CW_USEDEFAULT,
     NULL,
     NULL,
     hInstance,
     NULL);
 //show window
 ShowWindow(hwnd,SW_SHOWNORMAL);
 //update window
 UpdateWindow(hwnd);

 //receive message
 while(GetMessage(&msg,hwnd,0,0))
 {
   TranslateMessage(&msg);
      DispatchMessage(&msg);
 }
return msg.wParam;
}
LRESULT CALLBACK wndproc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
 switch(msg)
 {
     case WM_LBUTTONDOWN:
            MessageBox(hwnd,"left button down","tips",MB_OK);  break;
     case WM_RBUTTONDOWN:
            MessageBox(hwnd,"Right button down","tips",MB_OK);  break;
  case WM_DESTROY:
   PostQuitMessage(0);  break;
  default:
         return DefWindowProc(hwnd,msg,wParam,lParam);
 }

return 0;
}

 

原创粉丝点击