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

2017-12-27 19:06:05来源:CSDN作者:qq_37422196人点击

分享

在这个模块中,我们将编写一个最小的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

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台