学习vc++的第四天--窗体程序+学看微软cpp函数

开始windows的编程开发....因为我用的是vs2019,并没有找到win32项目的位置,而且我实验了 c++ for Windows空项目不行,可能我不知道怎么操作的关系...

所以我发现这里这个桌面应用程序这里也可以做到,应该是微软有某些新标准导致...

创建win32程序的方式在vs2019要改成这样的形式....然后下一步直接创建就好了...

然后我屏蔽了wWinMain函数,拿了课程代码来操作...

顺道一说,不要吝啬注释,尤其是新手阶段,疯狂注释就好了......到了领悟了代码的意义之后,逐步减少你不必要的注释即可.....

学会看函数:

int    WINAPI   _tWinMain(......)  {........}
返回值 调用约定 函数名 (参数列表) { 函数内部 }

调用约定的意思:https://www.cctry.com/thread-288828-1-1.html

然后为了了解MessageBox()这个函数的返回值,用我们c#程序员惯用的思维就是F12,但是....

 

懵逼了,引导到了一个一点都不优美的,叠一块的,连分号都节省的一堆语句里....

认真想一下(问了e大....).因为教程上老师说过函数体怎么读,然后我画了几个框框,总算读懂了...

然后这个int返回值的具体含义,1是msdn(选中函数按F1),2就是百度谷歌搜一遍了...

  

笔记: 

我看的课件已经到了:  https://www.bilibili.com/video/av79302998?p=57

win的类型自定义这个学起来需要蛮用心的,因为这太复杂了.....就好像之前说的,int已经不是单纯的int...

Windows 编程为什么要定义一套自己的数据类型呢?

为了解决以上问题,微软使用typedef关键字,为很多常用的C/C++类型均定义了别名,这样一来,要解决源代码移植问题,只需在目标平台上定义相同的一套类型别名,

即可解决大部分问题,很是方便,这其实也是为程序的扩展性考虑的。

DWORD  实质上就是unsigned long数据类型,32位无符号整型。
HANDLE 类型实质上是void, HANDLE定义为:
typedof PVOID HANDLE;
HANDLE  实际上就是一个PVOID,那PVOID又是什么呢?
typeof void* PVOID; 
PVOID  就是指向void的指针

 

  

然后学习了一个下载函数 URLDownloadToFile

接着新人的问题又要出现了,这个问题就是,

我无法按照课程写的就可以让vs顺利执行(下面这句).

#pragma comment (lib, "Urlmon.lib")

然后发现用鼠标瞄准 URLDownloadToFile 按F1,前往msdn,看到要引用头文件,我引用了一下就可以了..

#include "WindowsProject1.h"
#include <Windows.h>
#include <tchar.h>
#pragma comment (lib, "Urlmon.lib")//表示链接lib这个库。
#include "Urlmon.h"
// 和在工程设置里写上链入.lib的效果一样(两种方式等价,或说一个隐式一个显式调用),
// 不过这种方法写的 程序别人在使用你的代码的时候就不用再设置工程settings了

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPTSTR lpCmdLine, int nShowCmd)
{     
    //下载文件  https://www.bilibili.com/video/av79302998?p=58
HRESULT ret = URLDownloadToFile( NULL, //不是ActiveX控件 _T("https://s.cctry.com/images/eagle2.png"), //下载的地址 _T("E:/JingJoin/WindowsProject1/aa.png"), 0, //保留的参数,必须为0 NULL//下载状态的指针 ); //判断文件是否下载成功 if (S_OK == ret) MessageBox(NULL, _T("下载成功!"), _T("下载提示"), MB_OK); else MessageBox(NULL, _T("下载失败!"), _T("下载提示"), MB_OK | MB_ICONERROR | MB_DEFBUTTON1); return 0; }

微软真的妙啊,cpp喜欢改异名关键字,然后msdn还写了应该调用他们的什么异名关键字.

这样就可以写出在不同平台风格也能运行的代码...

猜你喜欢

转载自www.cnblogs.com/JJBox/p/12535969.html
今日推荐