Win32 SDK
文章平均质量分 84
tomwillow
这个作者很懒,什么都没留下…
展开
-
关于我是怎么找到MSVC的STL库的std::this_thread::sleep_for是怎么实现的这件事
直接从VS里转到定义今天阅读C++ Concurrency in Action 2nd Edition-2019,看到第四章:std::this_thread::sleep_for(std::chrono::milliseconds(100));突然好奇,这个sleep_for和windows api的Sleep有什么区别?右键,转到定义:发现sleep_for是调用的sleep_until。里面又有一个_Thrd_sleep。又追。进入xthreads.h,阿勒,这里只有声明没有定义呢。原创 2021-01-12 17:34:47 · 1317 阅读 · 3 评论 -
双缓冲方法实现waveOut的连续无卡顿播放以及即收即放
1. waveOut基本使用方法waveOut是一套历史悠久的Windows音频API,虽然古老,但至今仍运行良好,且支持老旧系统(原生支持Windows XP)。waveOut虽然不像DirectSound那样自带混音功能,但也可以通过同时开多个播放线程实现同时播放多个声音的目的,达到事实上的混音效果。waveOut的使用一般遵循Open - Prepare - Write - Reset - Unprepare - Close的步骤。本文提到的函数均省略前缀waveOut,例如Write实际上指的原创 2020-12-22 16:22:13 · 3855 阅读 · 2 评论 -
VS2019怎样编译出可以在WinXP上运行的exe?
1 打开Visual Studio Installer点“更多”-“修改”。点“单个组件”,在“编译器、生成工具和运行时”下面找到“对 VS 2017 (v141)工具的 C++ Windows XP 支持 [已弃用]”。选中,右边会出现两个待安装的项目,第2个对第1个是依存关系,不能单独安装。这两个加起来有900MB多,我这边已经装过了,所以截图显示的0KB。2 启动VS2019以一个Win32 SDK原生窗口hello world为例:#include <windows.h>原创 2020-11-17 14:36:47 · 13645 阅读 · 11 评论 -
使用Win32 API获得端口占用列表并关闭对应进程
获得端口占用可以用命令netstat -ab实现,结束进程可以用taskkill,但是用C++怎么实现呢?答案是Windows已经提供了API实现功能。GetTcpTable可以得到当前占用的端口数量以及具体的ip和端口,但是得不到对应的进程。GetTcpTable2可以额外获得占用端口对应进程的pid,拿到pid,后面问题就好办了。下面是效果图:源码:#define _WINSOCK_DEPRECATED_NO_WARNINGS#include <iostream>#inclu原创 2020-08-13 18:25:18 · 1793 阅读 · 7 评论 -
由于汇编单独生成obj导致的编译zlib-1.2.11中的minizip时出现LINK 2019,找不到match_init函数问题解决方案
为了压缩解压zip,下载了zlib库。库用CMake生成vs 2019的sln,没有问题。但是zlib本身压缩得到的数据没有zip文件头,不能输出当zip用。不过zlib里带了minizip库,可以实现压缩到zip文件和从zip文件解压。打开contrib\vstudio\vc14,打开sln。把zlibvc作为启动项目,把生成目标从dll改成lib(我打算静态编译)。编译,ok,得到了lib。但在编译minizip项目时遇到问题了。说是没找到match_init的实现。我草草搜了一下,发现d原创 2020-05-30 01:37:59 · 587 阅读 · 0 评论 -
由于.manifest引起的VS2019编译x64 ATL C++窗口程序时报错“应用程序无法正常启动0xc000007b”
今天把一个ATL C++程序改成64位,结果一编译就报错“应用程序无法正常启动0xc000007b”。这种情况一般是链接库的问题,用depends查看,发现一大堆 API-MS-WIN-***.dll 找不到。非常疑难杂症了。我想到可能是编译器的问题,链接了错误的dll,就开以前的64位程序进行编译,但都是正常的。这就排除了装c++ runtime的想法,肯定不是c++ runtime的问题。后面我看到有人说是 winsock2.h 和 windows.h 存在包含顺序的问题:使用Qt库时出现win原创 2020-05-24 12:34:17 · 1168 阅读 · 0 评论 -
将GLFW窗口嵌入Win32 SDK窗口及其多线程渲染方法
这篇文章提到了glfw嵌入mfc的办法,采用的查找进程PID再嵌入的方法,进程间通信采用UDP,略微繁琐。MFC单文档视图中嵌入GLFW窗口其实不必如此麻烦,SetParent直接就可以办到。第1步 创建标准Win32 SDK窗口#include <windows.h>LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM)...原创 2020-04-14 19:30:08 · 4680 阅读 · 4 评论 -
Win32 GDI中通过手动计算高斯模糊实现阴影效果
先说一句,Photoshop的图层样式中的**“阴影”,“外发光”**效果,实质上都是高斯模糊实现的。阴影效果是在图层后偏移叠加(也就是平面投影)一个纯黑的层,然后对RGB和alpha通道做高斯模糊。外发光效果是在图层后叠加一个黄色描边的层,然后做高斯模糊。本文通过CreateDIBSection取得位图指针,直接对位图数据alpha通道进行处理,调用AlphaBlend函数实现阴影效果。效果...原创 2020-01-07 11:48:16 · 1318 阅读 · 0 评论