VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 353|回复: 6

[原创] 《C/C++ Windows 程序设计》 输出贴

[复制链接]
74_avatar_middle
最佳答案
0 
在线会员 发表于 2021-11-17 12:50:10 | 显示全部楼层 |阅读模式
学习《C/C++ Windows 程序设计》的第二天


        编译环境:Windows10 64位,VS2019
        学习目的:掌握URLDownloadToFile、ShellExecuteEx 两个API函数的使用方法

        步骤一:
        启动VS2019 -> 创建“空项目”-> 项目名:“API函数应用”

        项目属性调整(第一天回顾)
        项目 -> 属性 -> 高级 -> 字符集“多字节”

        ->连接器 -> 系统 ->“窗口(/SUBSYSTEM:WINDOWS)”

        步骤二:
        解决方案资源管理器 -> 源文件 -> 添加C++文件 -> 名称"API应用"

        步骤三:
        代码输入,代码如下
       
        #include <Windows.h>
        #pragma comment (lib,"Urlmon.lib")

        int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,INT nCmdShow)
        {
                //下载资源地址
                LPCTSTR szURL = "https://s.cctry.com/images/eagle2.png";
                //保存文件地址及文件名
                LPCTSTR szFileName = "D:\\123.png";

                HRESULT bRet = URLDownloadToFile(NULL,szURL,szFileName,0,NULL);
                if (bRet == S_OK)
                {
                        MessageBox(NULL, "文件下载成功,即将运行程序!", "提示", MB_OK);
                        //定义SHELLEXECUTEINFO结构体变量,初始化为空
                        SHELLEXECUTEINFO ShellInfo = { 0 };
                        //数据大小
                        ShellInfo.cbSize = sizeof(SHELLEXECUTEINFO);
                        ShellInfo.lpVerb = "open";
                        ShellInfo.lpFile = szFileName;
                        ShellInfo.nShow = SW_SHOW;
                        //& 代表去ShellInfo地址
                        BOOL bRet1 = ShellExecuteEx(&ShellInfo);
                        if (bRet1 == FALSE)
                        {
                                MessageBox(NULL, "文件运行失败", "提示", MB_OK);
                        }
                }
                else
                {
                        MessageBox(NULL, "文件下载失败", "提示", MB_OK);
                }

                return 0;
        }
       
        编写代码及调试过程有如下错误:
        1、调用ShellExecuteEx时直接传参数,未取参数地址传递;

        解决方案:在变量名前加取地址符号 “&”

        2、生成过程中提示“URLDownloadToFile”未识别

        原因:未包含相关头文件

        解决方案:包含相关文件

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

        提问:        1、此处为什么 #include “Urlmon.h”不可以使用?

                        2、#include 与 #pragma comment 的区别?

        有哪位大佬愿意帮忙解惑,不胜感激。


                                                                                                                                2021年11月17日

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 很给力!

查看全部评分





上一篇:《C/C++ Windows 程序设计》 输出贴
下一篇:《C/C++ Windows 程序设计》 输出贴
58_avatar_middle
最佳答案
55 
online_vip 发表于 2021-11-17 17:08:29 | 显示全部楼层
即然你发在C\C++版块,那我就要说一句:有些问题自己先搜索一下在问,不要觉得搜索浪费时间,在搜索的过程中你可能还会有新的收获。
74_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-11-17 20:10:57 | 显示全部楼层
thzzl 发表于 2021-11-17 17:08
即然你发在C\C++版块,那我就要说一句:有些问题自己先搜索一下在问,不要觉得搜索浪费时间,在搜索的过程 ...

搜过的 结果是太专业 知识面没搞懂,#pragma comment 是找静态库 从MSDN中解释URLDownToFile是包含在头文件“Urlmon.h”中的,正常情况下包含头文件,就如申明过函数了,编译器该识别的。这是这点想不通。还请指教!
75_avatar_middle
最佳答案
22 
online_supermod 发表于 2021-11-17 20:19:13 | 显示全部楼层
夜风来袭 发表于 2021-11-17 20:10
搜过的 结果是太专业 知识面没搞懂,#pragma comment 是找静态库 从MSDN中解释URLDownToFile是包含在头文 ...

暂时理解不了就先放下,等以后在解决,
74_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-11-17 20:26:53 | 显示全部楼层
wl1383838438 发表于 2021-11-17 20:19
暂时理解不了就先放下,等以后在解决,

查看过include 与 pragma comment 所预处理的路径不同,#include 是以当前文件所在路径为当前目录 | #pragma comment 是以当前工程所在路径为当前目录 文件所在路径问题,这个Urlmon.h是系统内置头文件,不是自己的编写的头文件 这个应该涉及不到,先放着,在后面的过程中在悟这个问题。
58_avatar_middle
最佳答案
55 
online_vip 发表于 2021-11-17 20:58:19 | 显示全部楼层
夜风来袭 发表于 2021-11-17 20:10
搜过的 结果是太专业 知识面没搞懂,#pragma comment 是找静态库 从MSDN中解释URLDownToFile是包含在头文 ...

带着问题,带着好奇心往后学,后面还会反复用到前面所学的知识,慢慢就懂了。
75_avatar_middle
最佳答案
22 
online_supermod 发表于 2021-11-18 11:25:32 | 显示全部楼层
夜风来袭 发表于 2021-11-17 20:26
查看过include 与 pragma comment 所预处理的路径不同,#include 是以当前文件所在路径为当前目录 | #pra ...

一般我只用#pragma comment来链接lib 以至于其他的作用可能太久了很多基础知识都忘记了!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-1-21 10:55

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表