Windows 程序设计之 ------窗口和消息 学习总结

Windows 基本窗口的生成过程

共五步

第一步:注册窗口类

第二步:创建窗口

第三步:显示窗口

第四步:消息循环

 #include<windows.h>
LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, PSTR szCmdLine,int iCmdShow)
{
 static TCHAR szAppName[] = TEXT("HelloWin");
 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);  // LoadIcon 加载图标供程序使用
 wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);    // LoadCursor 加载鼠标指针供程序使用
 wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);  //获取一个图形对象
 wndclass.lpszMenuName = NULL;  
 wndclass.lpszClassName = szAppName;
   
 //RegisterClass 为程序窗口注册窗口类
 if ( !RegisterClass(&wndclass) )
 {
  MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppName,MB_ICONERROR);
  return 0;
 }
       //CreateWindow 根据窗口类创建一个窗口
 hwnd = CreateWindow( szAppName,                   //windows class name
                   TEXT("the Hello Program"),   //windows caption
       WS_OVERLAPPEDWINDOW,         //windows style
       CW_USEDEFAULT,               //initial x position
       CW_USEDEFAULT,               //initial y position
       CW_USEDEFAULT,               //initial x size
       CW_USEDEFAULT,               //initial y size
       NULL,                        //parent window handle
       NULL,                        //window menu handle
       hInstance,                   //program instance handle
       NULL);                      //creation parameters
   
 // ShowWindow 显示窗口
 ShowWindow(hwnd,iCmdShow);
 //UpdateWindow 指示窗口刷新自身
 UpdateWindow(hwnd);

 // GetMessage 从消息队列获取消息
 while (GetMessage (&msg,NULL,0,0))
 {

  //TranslateMesage 转换某些键盘消息
  TranslateMessage(&msg);

  //DispatchMessage 将消息发送给窗口过程
  DispatchMessage (&msg);
 }
 return msg.wParam ;
 

}

//回调函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message, WPARAM wParam,LPARAM lParam)
{
 HDC hdc;
 PAINTSTRUCT ps;
 RECT rect;
 switch (message)
 {
 //case WM_CREATE:
  //PlaySound 播放声音文件
 // PlaySound(TEXT("hellowin.wav"),NULL,SND_FILENAME |SND_ASYNC);
 // return 0;
 case WM_PAINT:
  //BeginPaint 开始窗口绘制
  hdc= BeginPaint(hwnd,&ps);
  //GetClientRect 获取窗口客户区的尺寸;
  GetClientRect (hwnd,&rect);
  //DrawText 显示文本
  DrawText (hdc,TEXT("Hell,Windows98!"),-1,&rect,DT_SINGLELINE | DT_VCENTER);
  //EndPaint 结束窗口绘制
  EndPaint(hwnd,&ps);
  return 0;
 case WM_DESTROY:
  // PostQuitMessage 在消息队列中插入一条“退出“消息
  PostQuitMessage(0);
  return 0;
 }
 //DefWindowProc 执行默认的消息处理
 return DefWindowProc (hwnd,message,wParam,lParam);
}

 

标识符定义:

前缀:                                                        类别:

CS                                                              类风格

CW                                                             创建窗口选项

DT                                                              绘制文本选项

IDI                                                              图标ID

IDC                                                           光标ID

MB                                                            消息框选项

SND                                                            声音选项

WM                                                            窗口消息

WS                                                            窗口风格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值