zoukankan      html  css  js  c++  java
  • 学习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还写了应该调用他们的什么异名关键字.

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

  • 相关阅读:
    mybatis概述
    Spring的配置分别是xml和java style
    JavaScript对象数据过滤、修改
    Spring框架
    设计模式-工厂方法模式(Fatory Patterm)
    简单的数据结构
    java链式操作
    centos7 php开发环境安装-composer
    centos7 php开发环境安装-php
    centos7 php开发环境安装-Apache
  • 原文地址:https://www.cnblogs.com/JJBox/p/12535969.html
Copyright © 2011-2022 走看看