Win32核心编程入门:从控制台到窗口程序
【资源摘要信息】: "Win32.pp 是一个关于C/C++编程的课程,专注于Win32核心编程。课程涵盖了Windows应用程序的类型,包括控制台程序、窗口程序和库程序(静态库和动态库),并详细阐述了它们的特征、入口函数、文件存在方式以及执行方式。此外,课程还介绍了Windows开发环境,如Visual Studio C++的不同版本及其编译工具,如CL.EXE、LINK.EXE和RC.EXE。Windows的核心库和头文件,如kernel32.dll、user32.dll、gdi32.dll,以及相关的头文件如windows.h,也在课程中有所涉及。最后,课程讲解了编写HelloWorld程序时会用到的基本函数,如WinMain函数的参数和作用。 Win32核心编程中的知识点主要包括: 1. **Windows应用程序的类型**: - **控制台程序**:基于DOS的程序,没有独立窗口,通常在命令行环境下运行,入口函数为main。 - **窗口程序**:拥有独立窗口,用于用户交互,入口函数是WinMain。 - **静态库程序**:扩展名为LIB,编译时将代码嵌入到执行文件中,没有独立的入口函数。 - **动态库程序**:扩展名为DLL,运行时被其他程序加载,入口函数是DllMain。 2. **入口函数**: - **main**:控制台程序的入口。 - **WinMain**:窗口程序的入口,接收四个参数:HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd。 - **DllMain**:动态库程序的入口,处理 DLL 的初始化和卸载。 3. **文件形式**: - **控制台程序和窗口程序**:生成的都是EXE文件。 - **动态库程序**:生成DLL文件。 - **静态库程序**:生成LIB文件。 4. **执行方式**: - **控制台程序**:在DOS窗口或命令提示符下运行。 - **窗口程序**:在自己的窗口中运行。 - **动态库程序**:不直接执行,由其他程序动态加载。 - **静态库程序**:其代码嵌入到可执行文件中。 5. **Windows开发工具**: - **Visual Studio C++**:一系列版本,从VC1.5到VC2010,提供集成开发环境。 - **编译器CL.EXE**:将源代码编译为目标代码。 - **链接器LINK.EXE**:将目标代码和库链接成最终可执行文件。 - **资源编译器RC.EXE**:处理资源文件,将其编译后加入到可执行文件中。 6. **Windows库和头文件**: - **kernel32.dll**:提供进程、线程、内存管理等核心API。 - **user32.dll**:提供窗口和消息处理的API。 - **gdi32.dll**:包含绘图相关的API。 - **头文件**:如`windows.h`、`windef.h`、`winbase.h`、`wingdi.h`、`winuser.h`和`winnt.h`,提供了Windows编程所需的定义和函数声明。 7. **HelloWorld程序**: - `WinMain`函数是窗口程序的起点,参数包括程序实例句柄、前一个实例句柄、命令行字符串和显示模式。 了解这些基础知识是进行Win32 API编程的关键,对于开发Windows桌面应用程序至关重要。通过深入学习和实践,开发者可以创建各种功能丰富的应用程序,利用Windows操作系统提供的强大功能。
![](https://csdnimg.cn/release/download_crawler_static/4827823/bgb.jpg)
![](https://csdnimg.cn/release/download_crawler_static/4827823/bgc.jpg)
![](https://csdnimg.cn/release/download_crawler_static/4827823/bgd.jpg)
剩余63页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
import re,tkinter,requests,threading,tqdm as tt root = tkinter.Tk() root.title('在线视频解析') root.geometry('500x590+550+350') headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0'} ac = tkinter.Listbox(root, width=50, height=20, font=('黑体', 12)) ac.grid(row=2, columnspan=10, sticky="n" + "s" + "w" + "e") def sousuo(): i = b1.get() ac.delete(0, 'end') def extract_music_info(content): p = '|' content = re.sub(p, '', content, flags=re.S) pattern = re.compile('subject.*?href="(.*?)">(.*?)
', flags=re.S) return pattern.findall(content) def search_music(): url = 'https://www.hifini.com/search-' + i + '-1.htm' response = requests.get(url=url, headers=headers) return response.text def update_listbox(music_list): for music in music_list: pppp = music[1] + ":" + music[0] ac.insert('end', pppp) content = search_music() music_list = extract_music_info(content) update_listbox(music_list) def xiazzi(): def download_music(): ppp = ac.get(ac.curselection()) pp = re.search('thread.*?htm', ppp) v = pp.group() url1 = 'https://www.hifini.com/' + v response = requests.get(url=url1, headers=headers) ppp = response.text l2 = re.search('<script>.*?title:..(.*?).,.*?author:.(.*?).,.*?url:..(.*?).,', ppp, flags=re.S) p = 'https://www.hifini.com/' + l2.group(3) response = requests.get(url=p, headers=headers, stream=True) # 设置 stream=True 以启用流式下载 total_size = int(response.headers.get('Content-Length')) music_name = '{}-{}.mp3'.format(l2.group(2), l2.group(1)) progress_bar = tt.tqdm(total=total_size, unit='B', unit_scale=True) # 创建进度条 with open(music_name, 'wb') as f: for data in response.iter_content(chunk_size=1024): progress_bar.update(len(data)) # 更新进度条 f.write(data) progress_bar.close() # 关闭进度条 print(music_name) threading.Thread(target=download_music).start() a1 = tkinter.Label(root, text='音乐下载器', anchor="center", font=('黑体', 24)) a1.grid(row=0, columnspan=10, sticky="n" + "s" + "w" + "e") b1 = tkinter.Entry(root, width=35, font=('黑体', 16), ) b1.grid(row=1, column=3, padx=15) search_button = tkinter.Button(root, text='搜索', command=sousuo) search_button.grid(row=1, column=4) download_button = tkinter.Button(root, text='下载', command=xiazzi) download_button.grid(row=3, column=4) root.mainloop() 将download_button带有下载行为的按钮添加进列表,![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/2619066418ae4755a2bba4ec9911ec44_success551.jpg!1)
- 粉丝: 1
- 资源: 18
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)