Windows桌面应用程序(1-2-2nd) 模块1.您的第一个Windows程序

在这个模块中,我们将编写一个最小的Windows程序。它所做的只是创建并显示一个空白窗口。这第一个程序包含约50行代码,不包括空行和注释。这将是我们的出发点;稍后我们将添加图形,文本,用户输入和其他功能。
这里写图片描述
示例程序的屏幕截图

以下是程序的完整代码:

#ifndef UNICODE
#define UNICODE
#endif 
#include<windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE,PWSTR pCmdLine,int nCmdShow){
    // Register the window class.
    const wchar_t CLASS_NAME[]=L"Sample Window Class";
    WNDCLASS wc={};
    wc.lpfnWndProc=WindowProc;
    wc.hInstance=hInstance;
    wc.lpszClassName=CLASS_NAME;
    RegisterClass(&wc);
    // Create the window.
    HWND hwnd=CreateWindowEx(
        0, // Optional window styles.
        CLASS_NAME, // Window class
        L"Learn to Program Windows", // Window text
        WS_OVERLAPPEDWINDOW, // Window style
        // Size and position
        CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
        NULL, // Parent window    
        NULL, // Menu
        hInstance, // Instance handle
        NULL // Additional application data
    );
    if(hwnd==NULL)
        return 0;
    ShowWindow(hwnd,nCmdShow);
    // Run the message loop.
    MSG msg={};
    while(GetMessage(&msg,NULL,0,0)){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
    switch(uMsg){
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        case WM_PAINT:
            {
                PAINTSTRUCT ps;
                HDC hdc=BeginPaint(hwnd,&ps);
                FillRect(hdc,&ps.rcPaint,(HBRUSH)(COLOR_WINDOW+1));
                EndPaint(hwnd,&ps);
            }
            return 0;
    }
    return DefWindowProc(hwnd,uMsg,wParam,lParam);
}

您可以从Windows Hello World Sample下载完整的Visual Studio项目。
简单介绍一下这段代码的作用可能是有用的。稍后的主题将详细检查代码。

  1. wWinMain是程序入口点。程序启动时,会注册一些关于应用程序窗口行为的信息。其中最重要的项目之一是在本例中名为WindowProc的函数的地址。这个函数定义了窗口的行为——它的外观,它如何与用户交互,等等。
  2. 接下来,程序创建窗口并接收唯一标识窗口的句柄。
  3. 如果窗口创建成功,程序将进入一个while循环。程序保持在这个循环中,直到用户关闭窗口并退出应用程序。

请注意,程序并没有显式调用WindowProc函数,即使我们说这是大多数应用程序逻辑定义的地方。Windows通过传递一系列消息来与程序通信。while循环内的代码驱动这个过程。每次程序调用DispatchMessage函数时,间接地导致Windows调用WindowProc函数,每个消息一次。

在这个部分

相关话题
学习用C++编写Windows程序
Windows Hello World示例


原文链接:Module 1. Your First Windows Program

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值