MFC Windows应用程序学习之处

怎么说呢,如果说是MFC倒不如说是MFC Windows应用程序(他们到底是什么关系,网上是这样认为的:

Windows程序设计一般是指用c语言编写windows应用程序,或叫做win32编程,MFC程序设计是利用C++,以MFC为基础编写windows应用程序;VC是一个开发工具,在这个开发工具里,可以进行win32编程和MFC程序设计

首先我们要知道windows应用程序是由Windows系统程序主函数及与其相关的事件消息处理函数组成的,我们需要编写的就是主函数和消息处理函数。主函数的作用就是用来创建窗口,接受用户事件并且将事件消息发送给系统(注意这里不同于Java的事件监听器);事件处理函数就是用来处理各种的反应,并且把处理后的结果返回给主函数。这两者

(主函数和事件处理函数)之间的通信就是通过Windows系统来实现的。我们还有知道有一个基本概念就是:句柄,

这个句柄是什么呢?很简单的说就是一个我可以用来调用微软封装好之后的所有函数。下面是一个简单的Windows程序,当鼠标左键单击程序窗口的用户区时,计算机的扬声器会发出“叮”的声音。


#include "stdafx.h"
#include "Windows.h"
#include<windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE PreFetchCacheLine,LPSTR lpCmdLine,int nCmdShow)
{
    HWND hwnd;                    //定义窗口句柄
    MSG msg;                          //定义一个用来存储消息的变量
    char lpszClassName[]="窗口";
    WNDCLASS wc;
    wc.lpfnWndProc=WndProc;
    wc.style=0;
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;
    wc.hInstance=hInstance;
    wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName=NULL;                           //窗口没有菜单
    wc.lpszClassName=lpszClassName;

    RegisterClass(&wc);                              //注册窗口类型

    //创建窗口
    hwnd=CreateWindow(lpszClassName,          //窗口类的名称
                        "Windows",              //窗口实例的标题
                        WS_OVERLAPPEDWINDOW,   //窗口的风格
                        120,                 //窗口左上角位置座标值x
                        50,    //窗口左上角位置座标值y
                        800,//宽度
                        600,//窗口的高度
                        NULL,//父菜单的句柄
                        NULL,//主菜单的句柄
                        hInstance,//应用程序实例句柄
                        NULL);//该值通常为NULL

    ShowWindow(hwnd,nCmdShow);                  //显示窗口
    UpdateWindow(hwnd);


    while (GetMessage(&msg,NULL,0,0))             //消息循环
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    switch (message)
    {                     //鼠标左键按下消息
    case WM_LBUTTONDOWN:
        {
            MessageBeep(0);           //可以发出声音的API函数
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hwnd,message,wParam,lParam);
    }
    return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章