第3章学习笔记

原创 2006年05月25日 14:32:00
Diyinside Community Academy Course (Beta)

Windows API自学课程(3)--Windows消息队列机制

学习任务:

1,解释Windows消息事件模型;

2,详细书上阅读HELLOWIN.C代码,并且对代码进行解释;

3,详细描述Windows API应用程序执行步骤

4,编写一个具有Windows消息事件的Win32 API应用程序


Learning WIN32 API Homework By citypw(Shawn Chang)
 
学习内容:

阅读<Programming Windows,Fifth Edition> Chapter 3
1,解释Windows消息事件模型;
Windows开发是不同于DOS开发的模型,Windows开发是基于消息事件驱动的设计,当用户需要完成某种功能时,会调用操作系统的API,然后操作系统将用户的需要包装成消息放到消息队列(QUEUE)里,消息队列是一个先进先出(FIFO)的,最后应用程序从消息队列里取走消息并进行响应.

2,详细书上阅读HELLOWIN.C代码,并且对代码进行解释;


3,详细描述Windows API应用程序执行步骤
创建窗口:1,设计一个窗口类 2,注册窗口类 3,创建窗口 4,显示与更新窗口
用户开始做操作,开始消息循环,一直到应用程序关闭.

4,编写一个具有Windows消息事件的Win32 API应用程序
#pragma comment(lib,"WINMM.LIB") //要用多媒体必须的文件
#include <windows.h>

//消息处理函数
//参数:窗口句柄,消息,消息参数,消息参数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    RECT rect;
    PAINTSTRUCT ps;
    //处理感兴趣的消息
    switch (message)
    {
    case WM_CREATE:
        //自己录的
        PlaySound (TEXT ("hello.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
        return 0 ;

    case WM_PAINT:
        //绘制一个"Hello,QUAKE III ARENA"
        hdc = BeginPaint (hwnd, &ps) ;

        GetClientRect (hwnd, &rect) ;

        DrawText (hdc, TEXT("Hello, QUAKE III ARENA"), -1, &rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
        EndPaint (hwnd, &ps);
        return 0;
    case WM_KEYDOWN:
        //用户按下键盘上的字母或者数字就会弹出消息
        MessageBox(hwnd,TEXT("Shit"),TEXT("yeah"),NULL);
        return 0 ;

    case WM_DESTROY:
        //当用户关闭窗口,窗口销毁,程序需结束,发退出消息,以退出消息循环
        PostQuitMessage (0) ;
        return 0 ;
    }
    //其他消息交给由系统提供的缺省处理函数
    return ::DefWindowProc (hwnd, message, wParam, lParam) ;
}

//应用程序主函数
//参数:实例句柄、前一个实例的句柄、命令行参数、窗口显示方式
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
    //1.注册窗口类
    static TCHAR szAppName[] = TEXT ("HelloWin") ; //窗口类名称

    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 = szAppName; //类名称
    //注册
    if (!RegisterClass (&wndclass))
    {
        MessageBox (NULL, TEXT ("RegisterClass Fail!"),
            szAppName, MB_ICONERROR) ;
        return 0 ;
    }

    //建立窗口
    HWND hwnd ;
    hwnd = CreateWindow (szAppName, //窗口类名称
        TEXT ("The Hello Program"), //窗口标题
        WS_OVERLAPPEDWINDOW, //窗口风格
        100,        //窗口启动时的X座标
        300,        //窗口启动时的Y座标
        500,        //窗口初始宽度
        300,        //窗口初始高度
        NULL,
        NULL,
        hInstance, //实例句柄
        NULL);




    ShowWindow (hwnd, iCmdShow) ;
    UpdateWindow (hwnd) ;

    //消息循环
    MSG msg ;
    while (GetMessage (&msg, NULL, 0, 0)) //从消息队列中取消息
    {
        TranslateMessage (&msg) ; //转换消息
        DispatchMessage (&msg) ; //分发消息
    }
    return msg.wParam ;
}
                                                         
                                                          id:CityPW
                                                          Shawn Chang
                                                          http://blog.csdn.net/raiden56

参考:Programming Windows和SUNXIN的视频第1章
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

DirectX 11游戏编程学习笔记之4: 第3章Transformations(变换)

本文由哈利_蜘蛛侠原创,转载请注明出处!有问题欢迎联系2024958085@qq.com           注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用章节...

DirectX 9 UI设计学习笔记之二:第2章Introducing DirectX+第3章Introducing Direct3D

此文由哈利_蜘蛛侠原创,转载请注明出处!有问题欢迎联系本人!        邮箱:2024958085@qq.com   上一期的地址: DX 9 UI设计学习笔记之一       ...

《C++ Primer(第5版)》学习笔记:第3章 字符串、向量和数组

类型与硬件:基本数据类型(比如数字、字符)体现了大多数计算机硬件本身具备的能力。标准库定义了另外一组具有更高级性质的类型,它们并未直接实现到计算机硬件中。 命名空间的using声明:头文件不应包含u...

Java面向对象编程-第3章学习笔记

第3章 数据类型和变量 Java中数据类型分为基本类型和引用类型。基本类型包括数值类型(整型、浮点、字符)和boolean型;引用类型包括类、接口和数组。 一、基本数据类型 1、boolean...

C和指针 学习笔记—第3章

第三章 数据   1、变量的三个属性:作用域、链接属性和存储类型(这三个属性决定了一个变量的“可视性”(也就是它可以在什么地方使用)和“生命期”(它的值将保持多久))。

《Python基础教程 第2版·修订版》第3章 使用字符串(学习笔记)

3.1基本字符串操作 基本字符串操作 所有标准序列的操作(索引、分片、乘法、判断成员资格、求长度、取最小值和最大值)对字符串同样适用。唯一不同是字符都是不可变的3.2字符串格式化:精简版 字符...

Oracle 9i/10g/11g编程艺术(2e)学习笔记【第3章】

第三章  文件 1、概述:构成数据库和实例的文件类型主要有以下8种。     与实例相关的文件包括:参数文件(parameter file)、跟踪文件(trace file)、警告文件(alert...

《VC++深入详解》学习笔记[2]——第3章MFC框架程序剖析

第3章MFC框架程序剖析 1.基于MFC的程序框架剖析 对于一个单文档应用程序,使用MFC AppWizard将自动生成5个类(假设工程名为Test): ①CAboutDlg←CDialog←C...

《STL源码剖析》学习笔记-第3章 迭代器

1、迭代器设计思维-STL关键所在迭代器:就是提供一种方法,在不需要暴露某个容器的内部表现形式情况下,使之能依次访问该容器中的各个元素。STL的中心思想在于:将数据容器(containers)和算法(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)