第1章,[Win32 章节]:在 VS2019 里面安装 MSDN

专栏导航

上一篇:第1章,Win32 章节:编程环境与 MSDN

回到目录

下一篇:第1章 :第一个 Win32 程序,头文件

本专栏课件

关于本专栏课件的获取方法,请参考下述课节。

参考课节:Windows 编程:本专栏课件

本节前言

对于本节所讲解的知识,有可能,你会需要时不时地参考本专栏之前的文章。真的遇到了需要参考之前的文章的知识点,请你自行查阅。

我呢,也会提到一部分的参考课节。但是呢,你不应该依赖于我的主动提及。最好呢,你自己能够多去了解和查看本专栏目录。

MSDN 全称 Microsoft Developer Network (微软开发者网络),是微软公司为软件开发者、系统管理员和技术爱好者打造的综合性技术资源平台。其中包括许多的对 Windows 程序员有用的资源,比如开发文档、技术文章和示例代码等。

本节,我们要在 VS2019 里面安装 MSDN 。这是一个实践上机课,请大家和我一起来操作。

一. 本节内容参考

下面的链接,有本节的参考教材。

参考课节:Windows 编程专栏参考教材

本节内容,是佩措尔德的教材里面所没有的。不过,你依然可以参阅着教材的相关内容,来学习本节课程。

请大家打开教材。

本节,大家可以去参考的,是佩措尔德教材的第 11 页到第 12 页里面,1.2.4 节的全部内容。

二. 安装 MSDN

(1)安装 Help Viewer 组件

我们在安装 VS2019 的时候,会首先安装一个叫做 Visual Studio Installer 的软件。请大家在自己的电脑中,打开这个 Visual Studio Installer 。结果如下图所示。
图1

接下来,我们在图1 所示的界面中,点击红色框线所示的【修改】按钮,结果如下图所示。
图2

在图2 里面,点击红色框线所示的【单个组件】标签页,结果如下图所示。
图3

然后呢,在图3 里面,我们将界面往下拉,找到下述位置。
图4

在图4 里面,请大家将红色框线所示的【Help Viewer】复选框给打上勾,结果如下图所示。
图5

在图5 里面,如左侧的红色框线所示,我们已经将【Help Viewer】复选框给打上勾了。接下来,我们点击右侧的红色框线所示的【修改】按钮。

点击了【修改】按钮以后,【Help Viewer】组件就会开始安装了。安装好了以后,界面如下图所示。
图6

接下来呢,我们关闭图6 所示的界面,也就是关闭 Visual Studio Installer 软件。

(2)配置 MSDN

然后呢,我们打开 VS2019,如下图所示。
图7

在图7 中,点击红色框线所示的【继续但无需代码】按钮,结果如下图所示。
图8

在图8 所示的软件主界面中,我们依次执行【帮助】->【设置帮助首选项】->【在帮助查看器中启动】,过程如下图所示。
图9 图10

在图10 所示的界面中,我们点击【是】按钮,结果如下图所示。
图11

在图11 所示的界面中,我们可以根据自己的学习和实际开发需要,来下载所需的相关文档。

我们来找到下述的位置。
图12

我们在图12 的位置,点击红色框线所示的【添加】按钮,以便将【Visual Studio 2015:Visual C++】帮助内容给添加上。

然后呢,我们在【可用的文档】分支里面,找到下述的位置。
图13

在图13 里面,如上方的红色框线所示,我们处于【可用的文档】分支里面。

然后呢,我们点击下方的红色框线所示的【添加】按钮,以便将 Windows API 参考文档给下载到本地。

然后呢,我们找到下述界面。
图14

在图14 中,我们来点击界面右下方的【更新】按钮。

然后呢,我们在图12 和图13 中添加的帮助文档就会下载了。

花费一段漫长的时间,我们选择的帮助文档就会下载好了。

安装好了以后,我们来查看一下我们自己添加的选项。如下面的两个图所示。
图15 图16

然后呢,我们就关闭这个界面吧。点击图16 所在的界面的右上角的叉号,关闭【Help Viewer】界面。

到了这里,安装 MSDN 的工作,我们就做完了。

三. 测试 MSDN

(一)示例程序的编译

接下来呢,请大家在 VS2019 里面,新建一个解决方案。解决方案与项目名称,都命名为 MSDN_Test,添加的源文件的名字为 WinMain.cpp 。

在 WinMain.cpp 里面,请添加下面的代码块所示的代码。

复制代码
/*------------------------------------------------------------
   Windows API 示例程序
                 水饺编程,2026
  ------------------------------------------------------------*/

#include <windows.h>

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

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR szCmdLine, int iCmdShow)
{
    static TCHAR szAppName[] = TEXT("Win32_Sample");
    HWND         hwnd;
    MSG          msg;
    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("注册窗口类失败!"),
            szAppName, MB_ICONERROR);
        return 0;
    }

    hwnd = CreateWindow(szAppName,                  // window class name
        TEXT("Win32 示例程序"), // window caption
        WS_OVERLAPPEDWINDOW,        // window style
        CW_USEDEFAULT,              // initial x position
        CW_USEDEFAULT,              // initial y position
        CW_USEDEFAULT,              // initial x size
        CW_USEDEFAULT,              // initial y size
        NULL,                       // parent window handle
        NULL,                       // window menu handle
        hInstance,                  // program instance handle
        NULL);                     // creation parameters

    ShowWindow(hwnd, iCmdShow);
    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)
{
    HDC         hdc;
    PAINTSTRUCT ps;
    static int  x1, y1, x2, y2; ;

    switch (message)
    {
    case WM_CREATE:
        x1 = 200;
        y1 = 100;
        x2 = 430;
        y2 = 300;
        return 0;

    case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);

        Rectangle(hdc, x1, y1, x2, y2);
        Ellipse(hdc, x1, y1, x2, y2);

        EndPaint(hwnd, &ps);
        return 0;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}

如果你忘记了如何在 VS2019 里面建立一个 Windows API 解决方案,可以参阅下述课节。

参考课节:第1章:用 VS2019 编写 WIndows SDK 程序

注意,此时,我们尚未讲解 Windows API 的许多知识,所以呢,里面的代码,你大概率地是看不懂的。本节,我们也不需要你懂这个代码块里面的代码逻辑,只要你能够跟着操作下来,就可以了。

运行结果如下。
图17

关于图17,我们是画了一个正方形和一个正圆。其中呢,正方形和圆,它们是外接与内接的关系。

图17 所示的界面,大家可以关闭了。

(二)使用 MSDN

然后呢,我们找到代码的下述位置。
图18

图18 里面,红色框线所示的 Rectangle 和 Ellipse,这俩英文单词,分别是矩形和椭圆的意思。它们呢,功能分别是用来绘制矩形和椭圆。如果矩形的长宽一致,就会画出正方形了。椭圆也是类似的逻辑,长的直径和短的直径若是相等的长度的话,那就会画出正圆了呗。

现在呢,我们将鼠标指针移动到 Rectangle 的文字区域,然后呢,我们按下键盘功能键里面的 F1 键,结果如下图所示。
图19

然后呢,我们关掉图19 所示的界面。

我们再用鼠标选中图18 中红色框线所示的【Ellipse】字样,如下图所示。
图20

选中以后,我们按下键盘上的 F1 键,结果如下图所示。
图21

这样一来,MSDN 的使用方法,我们算是演示了一点小的东西。

剩下的呢,你可以自己去探索图21 所示的界面的各种有趣的东西。在左侧,点击相关的选项,就可以找到许多许多的有趣的内容了。

有个小问题,如果某些个同学已经接触过 MFC 的话,会发现,弹出的内容,不是 Windows API 的内容,而是 MFC 里面的内容。那该怎么办呢?我们可以使用 Help Viewer 界面里的搜索框。这一点,我们在 三.(四) 里面来演示。

(三)MSDN 使用方法小结

(1)本分节案例中的 MSDN 使用方法

我们来略微总结一下本分节的演示案例中,所涉及的 MSDN 的使用方法。

首先呢,在一个项目代码中,这个项目,可以是 Windows API 项目,也可以是 MFC 项目。然后呢,将鼠标指针移动到想要查阅的函数的文字区域中,或者是鼠标选中这个函数,然后呢,按下键盘的功能键 F1,然后就可以弹出 MSDN 的 Help Viewer 了。

(2)无项目时,直接调出 Help Viewer

在没有项目时,也就是,假定,你的 VS2019 处于下述界面中。
图22

在图22 所示的界面中,我们可以依次执行【帮助】->【查看帮助】菜单命令,然后呢,就会弹出下图所示的界面。
图23

你看吧,弹出来的图23,依然是 Help Viewer 界面。

这个东西呢,还是很有用的。

图23 所示的界面先留着,先不要关闭。我们接下来有用。

(四)使用 Help Viewer 中的搜索框

在 三.(二) 里面演示时,我们用 MSDN 的 Help Viewer 界面搜索出的内容,都是 MFC 里面的 Rectangle 和 Ellipse 函数,而不是 Windows API 里面的 Rectangle 和 Ellipse 函数。如果 ,你非要找到 Windows API 里面的这俩函数,那该咋办呢?

首先呢,我们在 Help Viewer 界面里面,找到下述的位置。
图24

图24 里面的红色框线所示的东西,便是 Help Viewer 里面的搜索框里。我们在其中输入【Ellipse】,然后按下回车键,结果如下图所示。
图25

在图25 里面,出现了好多的搜索结果。其中,请大家重点关注我用红色框线标注出来的三个结果。

上方的红色框线所示的结果,你点击了它以后,出现的东西,会与 三.(二) 里面演示的结果一样,都是会在右边显示 MFC 的 Ellipse 的解释。

点击中间和下方的红色框线,会分别显示下面的两个情况。
图26 图27

其中呢,图26 所示的东西,不是我们想要找的。而图27 所示的东西,才是我们要找的。

不过呢,很遗憾,它显示的是英文,而不是中文。那咋办呢?我们在界面右上方区域中,找到下述的位置。
图28

在图28 所示的区域里面,点击红色框线所示的【online】文字链接。点击了这个文字链接以后,会打开浏览器,里面会出现一个页面,其中的内容与图27 的内容会有关,结果如下图所示。
图29

在图29 里面,还有翻译对话框,如下图所示。
图30

在图30 的红色框线所示的翻译对话框中,点击【翻译】按钮,结果如下图所示。
图31

这个结果呢,差不多就是我们想要的东西了。

当然了,有可能呢,你那里,打开的浏览器,不是我的截图里所示的微软 Edge 浏览器,而是其他的浏览器。那么,就请你用你那里打开的浏览器的翻译功能,来翻译网页内容,就好了。

如果呢,你对翻译内容不满意,你也可以参照下述课节所示的方法,来查阅相关的内容。

课节:Windows 编程辅助技能:必应搜索引擎

课节:Windows 编程辅助技能:使用 MSDN

课节:Windows 编程辅助技能:联机搜索

这几种方法结合着来使用,总能找到你想要的结果的。

结束语

本节主要讲解了 MSDN 的安装与使用方法。

本来没想要写这么多的东西,结果呢,却还是写了好多。

本节结束。

专栏导航

上一篇:第1章,Win32 章节:编程环境与 MSDN

回到目录

下一篇:第1章 :第一个 Win32 程序,头文件

相关推荐
垆边人似月.1 小时前
华为题:每日温度
数据结构·c++·算法
j7~2 小时前
【算法】专题四.前缀和:一维二维模板,配套 LeetCode 真题,结合同余定理、哈希前缀和,搞定子数组与子矩阵区间求和问题。
数据结构·c++·算法·前缀和·优选算法
水饺编程2 小时前
第1章,[Win32 章节]:编程环境与 MSDN
c语言·c++·windows·visual studio
丨白色风车丨2 小时前
Python中JSON与字典/列表的相互转换详解
windows·python·json
草莓熊Lotso2 小时前
【C++ 基于微服务的即时通讯系统】基建三件套:gflags + gtest + spdlog 源码编译安装与实战入门
linux·网络·数据库·c++·微服务·log4j
H.莓飛2 小时前
【C++】类与对象(末):static、友元与拷贝优化
linux·开发语言·c++·visual studio
瑶山2 小时前
Windows 11 一键安装命令安装 WSL2到D盘
windows·wsl
sm_9267870511 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
by2099911 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态