1. #include <windows.h>
  2.  
  3. //#define WM_MYMSG (WM_USER +100)
  4.  
  5. LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
  6.  
  7. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  8. PSTR szCmdLine, int iCmdShow)
  9. {
  10. static TCHAR szAppName[] = TEXT ("HelloWin");
  11. HWND hwnd;
  12. MSG msg;
  13. WNDCLASS wndclass;
  14.  
  15. wndclass.style = CS_HREDRAW | CS_VREDRAW ;
  16. wndclass.lpfnWndProc = WndProc ;
  17. wndclass.cbClsExtra = ;
  18. wndclass.cbWndExtra = ;
  19. wndclass.hInstance = hInstance ;
  20. wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION) ;
  21. wndclass.hCursor = LoadCursor(NULL,IDC_ARROW) ;
  22. wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH) ;
  23. wndclass.lpszMenuName = NULL ;
  24. wndclass.lpszClassName = szAppName ;
  25.  
  26. if(!RegisterClass(&wndclass))
  27. {
  28. MessageBox(NULL, TEXT("This program requires Windows NT!"),
  29. szAppName, MB_ICONERROR);
  30.  
  31. return ;
  32. }
  33.  
  34. hwnd = CreateWindow(szAppName,
  35. TEXT("The Hello Program"),
  36. WS_OVERLAPPEDWINDOW,
  37. CW_USEDEFAULT,
  38. CW_USEDEFAULT,
  39. CW_USEDEFAULT,
  40. CW_USEDEFAULT,
  41. NULL,
  42. NULL,
  43. hInstance,
  44. NULL);
  45.  
  46. ShowWindow(hwnd , iCmdShow);
  47. UpdateWindow(hwnd);
  48.  
  49. while(GetMessage (&msg, NULL, , ))
  50. {
  51. TranslateMessage(&msg);
  52. DispatchMessage(&msg);
  53. }
  54.  
  55. return msg.wParam;
  56. }
  57.  
  58. LRESULT CALLBACK WndProc(HWND hwnd , UINT message , WPARAM wParam , LPARAM lParam)
  59. {
  60. HDC hdc;
  61. PAINTSTRUCT ps;
  62. RECT rect;
  63.  
  64. switch(message)
  65. {
  66. case WM_CREATE:
  67. // PlaySound (TEXT ("123.wav"), NULL , SND_FILENAME |SND_ASYNC);
  68. return ;
  69.  
  70. case WM_PAINT:
  71. hdc = BeginPaint(hwnd , &ps);
  72.  
  73. GetClientRect(hwnd, &rect);
  74.  
  75. DrawText(hdc , TEXT("Hello Windows 98!") , - ,&rect ,
  76. DT_SINGLELINE | DT_CENTER | DT_VCENTER);
  77.  
  78. EndPaint(hwnd,&ps);
  79.  
  80. // PlaySound (TEXT ("123.wav"), NULL , SND_FILENAME |SND_ASYNC);
  81. return ;
  82. /*
  83. case WM_MYMSG:
  84. PlaySound (TEXT ("123.wav"), NULL , SND_FILENAME |SND_ASYNC);
  85. return 0; //自定义消息
  86. */
  87. case WM_LBUTTONDOWN:
  88. // PlaySound (TEXT ("123.wav"), NULL , SND_FILENAME |SND_ASYNC);
  89. // InvalidateRect(hwnd, NULL , FALSE);
  90. // SendMessage(hwnd , WM_MYMSG , wParam , lParam);
  91. return ;
  92.  
  93. case WM_DESTROY:
  94. // PlaySound (TEXT ("123.wav"), NULL , SND_FILENAME |SND_ASYNC);
  95. PostQuitMessage();
  96. return ;
  97. }
  98. return DefWindowProc(hwnd,message,wParam,lParam);
  99. }

《windows程序设计》学习_2.1:初识消息的更多相关文章

  1. Windows程序设计学习笔记(一)Windows内存管理初步

    学习Windows程序设计也有一些时间了,为了记录自己的学习成果,以便以后查看,我希望自己能够坚持写下一系列的学习心得,对自己学习的内容进行总结,同时与大家交流.因为刚学习所以可能有的地方写不不正确, ...

  2. Windows程序设计学习笔记(1):一个简单的windows程序

    <Windows程序设计>(第五版)(美Charles Petzold著) #include<windows.h> LRESULT CALLBACK WndProc(HWND, ...

  3. Windows程序设计学习笔记(五)——菜单资源和加速键的使用

    菜单可能是Windows提供的统一用户界面中最重要的一种方式,菜单通常在标题栏的下一行显示,这一栏叫做菜单栏,菜单栏中的每一项称之为菜单项,菜单栏中的每一个菜单项在激活时会显现一个下拉菜单(也可以说是 ...

  4. Windows程序设计学习笔记(四)自绘控件与贴图的实现

    Windows系统提供大量的控件供我们使用,但是系统提供的控件样式都是统一的,不管什么东西看久了自然会厌烦,为了使界面更加美观,添加一些新的东西我们需要自己绘制控件. 控件在默认情况下并不进行自绘,如 ...

  5. windows程序设计学习笔记(一)

    windows里的变量类型 1.简单重定义windows变量 BOOL (TRUE FALSE) INT UINT(32位,4字节) LONG DWORD(32位,4字节) lParam,wParam ...

  6. Windows程序设计(第五版)学习:第三章 窗口与消息

        第三章 窗口与消息 1,windows窗口过程:应用程序所创建的每一个窗口都有一个与之关联的窗口过程,用于处理传递给窗口的消息. 2,窗口依据窗口类来创建.窗口类标识了用于处理传递给窗口的消息 ...

  7. 《Windows程序设计第5版》学习进度备忘

    书签:另外跳过的内容有待跟进 __________________学习资源: <Windows程序设计第5版珍藏版> __________________知识基础支持: _________ ...

  8. 《windows程序设计》学习_4.1:计时器(可用于扫雷)

    为了做一个逼真的扫雷,我的扫雷程序的位图都是从windowsXP下面的扫雷里来的.具体是怎么获取位图的呢?win8.1不给力,习惯了vc++6.0,所以虚拟机里装上了xp,用vc++6.0加载扫雷程序 ...

  9. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  10. Windows 程序设计

    一.Win32 API /******************************************************************** created: 2014/04/1 ...

随机推荐

  1. iOS定位与地图

    定位: 手机上定位的实现主要有三种方式:基站(附近基站的位置),wifi(所连接路由器的位置),卫星(最准确,也最耗能). iOS的定位功能主要是由CLLocationManager类来完成的.这个类 ...

  2. Swift 函数和类

    函数: func sayHello(personName:String,z:Int)->{ return "hello"+personName+z } print(sayHe ...

  3. virtualbox 虚拟机网络设置

    1.宿主机网卡设置 virtualbox 第一块网卡设置 virtualbox第二块网卡设置 2.虚拟机网络设置 找到以上设置中MAC地址对应的那个网卡: 配置网络: 重启网络,ok.

  4. ADO.NET入门

    什么是ADO.NET ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类用类操作文件一样, System.Data.这组类是用来操作数据库(不光是MS ...

  5. 10.java.lang.FileNotFoundException

    java.lang.FileNotFoundException 文件未找到异常 当程序试图打开一个不存在的文件进行读写时将会引发该异常.该异常由FileInputStream,FileOutputSt ...

  6. 立体像对DEM提取

    版权声明:本教程涉及到的数据仅练习使用,禁止用于商业用途. 目录 1.概述 2.详细操作步骤 第一步:输入立体像对 第二步:定义地面控制点 第三步:定义连接点 第四步:设定DEM提取参数 第五步:输出 ...

  7. Exchange Web Service 获取邮件的附件并保存到本地的示例代码

    private static void DownLoadMailAttachments(ExchangeService service, ItemId itemId) { EmailMessage m ...

  8. 几家SIEM

    HP Arcsight Imperva is a HP Business Partner. HP is the world's largest IT company, providing infras ...

  9. SendMessage基本认识

    SendMessage基本认识 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而函数PostMessage不同,将一个消息寄送到一个线 ...

  10. Android Studio设置自动编译工程