
Windows编程
文章平均质量分 94
Barry__
勿在浮沙筑高台
展开
-
彻底搞懂字符编码ASCII,GB2312,UNICODE,UTF-8
阅读了一篇关于编码的博客(点击打开链接)后,自己做了下总结,解释一下基础知识基础能看到这篇文章, 我就假设你知道二进制,字节(byte),比特位(bit)这些概念了,如果不知道就先去了解下吧。什么是字符编码?我们都知道,计算机只能识别二进制,任何数据都是以二进制形式存储在计算机上的,拿现实生活中的数字为例,现实中的数字是十进制的,例如0, 1, 2, 3, 4, 5, 6, 7, 8, ...原创 2019-08-29 16:24:55 · 1541 阅读 · 0 评论 -
关于Windows高DPI的一些简单总结
转自:http://www.cppblog.com/weiym/archive/2014/02/18/205841.aspx我们知道,关于高DPI的支持, Windows XP时代就开始有了, 那时关于高DPI的支持比较简单, 但是从Vista/Win7 到现在Win8 /Win8.1, Windows关于高DPI的支持已经发生了很大的变化, 下面我们依次简单介绍下。如果说以前XP转载 2017-02-15 22:55:38 · 2422 阅读 · 0 评论 -
也谈如何获取真实正确的 Windows 系统版本号
转自:http://www.cnblogs.com/jiake/p/6093780.html关于 GetVersion 系列接口关于如何获取 Windows 系统版本号的话题,网上已经有了太多的帖子。但个人觉得总结的都不尽全面,或者没有给出比较稳定的解决方案。众所周知,获取 Windows 系统版本的 API 是 GetVersion 和 GetVersionEx。这两转载 2017-02-15 22:03:13 · 4877 阅读 · 6 评论 -
使用_CrtSetDbgFlag检测内存泄露
转自:http://blog.youkuaiyun.com/chenyujing1234/article/details/8075667一、介绍:动态分配、回收内存是C/C++编程语言一个最强的特点,但是中国哲学家孙(Sun Tzu,我不知道是谁?那位知道?)指出,最强的同时也是最弱的。这句话对C/C++应用来说非常正确,在内存处理出错的地方通常就是BUGS产生的地方。一个最敏感和难检转载 2017-02-22 10:35:47 · 653 阅读 · 0 评论 -
Poco介绍及编译
转自:http://www.cnblogs.com/fuland/p/3768705.htmlPoco C++库是:一系列C++类库,类似Java类库,.Net框架,Apple的Cocoa;侧重于互联网时代的网络应用程序使用高效的,现代的标准ANSI/ISO C++,并基于STL高可移值性,并可在多个平台下可用开源,并使用Boost Software License发布不管是否转载 2017-02-05 21:36:43 · 4317 阅读 · 0 评论 -
VC下utf-8 ansii相互转化
转自:http://blog.sina.com.cn/s/blog_81084a3a01014srq.htmlhealer_kxinline std::string KS_UTF8_to_ANSI (const char* szUTF8){ if (szUTF8 == NULL) return "" ; int nLen = ::MultiB转载 2016-12-29 21:55:01 · 1882 阅读 · 0 评论 -
使用WinINet和WinHTTP实现Http访问
转自:http://blog.youkuaiyun.com/whatday/article/details/38093091Http访问有两种方式,GET和POST,就编程来说GET方式相对简单点,它不用向服务器提交数据,在这个例程中我使用POST方式,提交数据value1与value2,并从服务器得到他们的和(value1 + value2)。为实现Http访问,微软提供了二套API:W转载 2016-12-23 20:11:21 · 1624 阅读 · 0 评论 -
HTTP HTTPS POST GET(包含curl版本和winhttp两种实现)
转自:http://blog.youkuaiyun.com/sunflover454/article/details/49030803玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。今天带给大家的是C++版本的http https get post,只会易语言的朋友请移步。我这里有两种实现:1:libc转载 2016-12-23 19:50:04 · 2955 阅读 · 0 评论 -
VC++MFC对话框应用程序实现程序最小化到系统托盘
转自:http://blog.sina.com.cn/s/blog_6b23bc700100pqrm.html 现在使用系统托盘图标的程序越来越多,尤其是需要长时间运行的程序。这并不是什么高深的技术,纯当做个笔记。 第一步:定义一个 NOTIFYICONDATA 结构变量 nid。NOTIFYICONDATA结构体定义可以在MSDN中查找,就不做多做介绍。 第二步转载 2016-12-15 16:28:58 · 1750 阅读 · 0 评论 -
windows下的托盘编程(Shell_NotifyIcon)
添加和删除托盘图标BOOL AddNotificationIcon(HWND hwnd){ NOTIFYICONDATA nid = {sizeof(nid)}; nid.hWnd = hwnd; // add the icon, setting the icon, tooltip, and callback message. // the icon will转载 2016-12-16 22:00:17 · 1873 阅读 · 0 评论 -
MFC序列化Serialize
使用原因写一个http下载软件,要求退出时保存未下载的记录,下次启动继续下载,我的下载记录保存在程序中的一个list中,用序列化实现是比较方便的。序列化Serialize使用介绍创建可序列化的类使类可序列化需要五个主要步骤。下面列出了这些步骤并在以后章节内进行了解释:从 CObject 派生类(或从 CObject 派生的某个类中派生)。重写 Seria原创 2016-12-16 21:33:59 · 801 阅读 · 0 评论 -
C++封装ini操作
转自:http://blog.youkuaiyun.com/lewutian/article/details/6787048#C++封装ini操作// IniFile.h #ifndef __INIFILE_H__ #define __INIFILE_H__ class CIniFile { public: CIniFile(); CIniFil转载 2016-11-25 16:16:45 · 1834 阅读 · 0 评论 -
C++监测文件夹变化
转自:http://blog.youkuaiyun.com/zhihu008/article/details/7995829FileSystemWatcher.h#ifndef __FILESYSTEMWATCHER_HPP__#define __FILESYSTEMWATCHER_HPP__#if(_WIN32_WINNT < 0x0400)#define _WIN32_WINNT转载 2016-11-30 11:05:44 · 10608 阅读 · 1 评论 -
理解 ReadDirectoryChangesW
理解 ReadDirectoryChangesW原作者:Jim Beveridge原文:http://qualapps.blogspot.com/2010/05/understanding-readdirectorychangesw.html?amp渣翻译:bbcallen@gmail.com世界上最长,最详细的 ReadDirectoryChangesW 的使用方法描述。转载 2016-12-07 19:09:01 · 2023 阅读 · 1 评论 -
Windows系统版本判定那些事儿
转自:http://blog.youkuaiyun.com/magictong/article/details/40753519前言本文并不是讨论Windows操作系统的版本来历和特点,也不是讨论为什么没有Win9,而是从程序员角度讨论下Windows获取系统版本的方法和遇到的一些问题。在Win8和Win10出来之后,在获取系统版本时,可能很多人都碰到了类似的问题,为什么以前工作得很好的API,突然开转载 2017-02-15 23:02:14 · 594 阅读 · 0 评论 -
VC热键控件(Hot Key Controls)
简介:热键控件Hot Key Controls,是一个控件,就像IP控件一样,方便输入IP地址,同理,热键控件是方便输入热键的这要和VC的热键区分开,举个例子,你开发的软件需要支持快捷键操作,而且用户可以自定义快捷键。那么你的工作有两步:第一步是有个界面,提供给用户设置自定义快捷键第二步你获取到用户设置的快捷键,将此快捷键注册为热键,在程序中响应就可以了本文介绍的h原创 2017-04-06 14:45:52 · 2643 阅读 · 0 评论 -
Windows微信DPI适配
一、背景随着近些年屏幕设备的不断发展,各种显示设备的分辨率也越来越高,在尺寸保持基本不变的情况下,分辨率越高,设备的DPI也越高,清晰度也就越高。高DPI的设备给我们提供了更精细的画质,然而Windows上的大多数应用并没有适配高DPI的显示器,导致应用在这些设备显示模糊,体验非常差。为了让应用在高DPI的设备上依然显示清晰,我们就需要对高DPI的设备进行适配。二...转载 2019-01-11 18:01:11 · 5688 阅读 · 0 评论 -
切换输入法导致程序死机的解决办法
转自:https://blog.youkuaiyun.com/chenlycly/article/details/7345040 近日在开发类似QQ屏幕截图过程中,发现在输入文字时切换输入法(Ctrl+Shift)时,会导致程序出现“卡死”现象。为了方便代码重用,屏幕截图模块是以动态库方式封装起来的。出现“卡死”现象后,只能通过任务管理器强制杀掉对应的进程才能退出程序。于是,上网搜索了相关话题,发现原因通常是...转载 2018-07-06 17:18:36 · 4145 阅读 · 0 评论 -
Windows 下使用PDH 获取CPU 使用率
转自:https://blog.youkuaiyun.com/fengyishang/article/details/46440135windows下获取cpu 使用率的方法大概有以下这三种:windows 自带的API ,一般包含在头文件windows.h中Performance Data Helper (PDH),性能数据助手Windows Management Instrumentation(WMI),...转载 2018-07-03 16:54:26 · 3303 阅读 · 0 评论 -
vs2015无法解析的外部符号 __imp___vsnprintf
解决:无法解析的外部符号 __imp___vsnprintf在 vs2015 工程选项,链接器附加依赖项里面添加 legacy_stdio_definitions.lib 即可。出现这个问题的原因是 vs2015 默认编译时将许多标准库采用内联方式处理,因而没有可以链接的标准库文件,所以要专门添加标准库文件来链接标准库中的函数。原创 2017-12-04 09:15:03 · 1632 阅读 · 0 评论 -
CRT 库功能
CRT 库功能Visual Studio 2013其他版本本主题将介绍各种 .lib 文件,包括 C 运行时库及其关联的编译器选项和预处理器指令。C 运行时库 (CRT)以下库包含 C 运行时库函数。C运行时库(不含 iostream 和标翻译 2017-10-13 18:17:06 · 2840 阅读 · 1 评论 -
VLD(Visual LeakDetector)内存泄漏库的使用
VLD简介 由于C/C++语言没有所谓的垃圾收集器,内存的分配和释放都需要程序员自己来控制,这会给C/C++程序员带来一定的困难。当您的程序越来越复杂时,它的内存管理也会变得越来越困难。内存泄漏、内存越界是最常见的内存问题之一。 内存泄漏如果不是很严重的话,在短时间内对程序不会造成太大的影响,而且在进程终止的时候,所有分配的内存都会释放掉。但是对于长时间运行的程序,其破坏力是惊人的,转载 2017-09-30 13:50:43 · 582 阅读 · 0 评论 -
VC++文件路径和文件名处理函数
转自:http://blog.youkuaiyun.com/hehe6378/article/details/18990739路径截断与合并函数 GetModuleFileName得到模块路径名PathRemoveArgs去除路径的参数PathRemoveBackslash去转载 2017-09-06 14:44:45 · 2761 阅读 · 0 评论 -
VC中播放WAV文件
转自:http://blog.youkuaiyun.com/liuliu20036/article/details/3229615VC中播放WAV文件的API为PlaySound函数。1.函数详细说明:PlaySound函数的声明为: BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound); 参数pszSound转载 2017-08-27 16:04:02 · 602 阅读 · 0 评论 -
windbg调试句柄泄漏
转自http://blog.youkuaiyun.com/hexieshangwang/article/details/47187877句柄泄露调试(Handles Leak Debug) 一、概述 造成句柄泄露的主要原因,是进程在调用系统文件之后,没有释放已经打开的文件句柄。 对于句柄泄露,轻则影响某个功能模块正常运行,重则导致整个应用程序崩溃。在 Windows系统中, G转载 2017-04-06 18:36:55 · 2787 阅读 · 0 评论 -
MFC加速键Acceleretor使用及详细介绍
简介:Acceleretor 从字面上来看是加速键,实际功能是给程序中的控件设置快捷键,设置好以后,按下设置的快捷键效果和点击控件是一样的。注意:加速键的作用范围是程序,当前程序处于激活状态的时候加速键才会生效使用:对于MFC多文档程序单文档程序等,直接在资源视图中的Acceleretor资源中添加新项绑定控件ID和快捷键就好了。对于对话框程序,我们要做一些额外的操作,对话框程原创 2017-04-06 12:07:50 · 5839 阅读 · 3 评论 -
RegisterHotKey 热键的使用
简介:简单的说就是全局快捷键,你的程序启动后注册热键到指定窗口,以后如果用户按下你注册的热键,你的指定窗口就会收到WM_HOTKEY消息通知,进而进行处理。使用起来只有三个步骤:1.注册热键2.在WM_HOTKEY通知中进行逻辑处理3.解除注册热键API介绍:(具体消息参数含义,详细介绍等可以去msdn官网查看https://msdn.microsoft.com/en-原创 2017-04-06 14:26:16 · 17052 阅读 · 1 评论 -
WM_GETMINMAXINFO的作用
转自:http://blog.youkuaiyun.com/flowshell/article/details/4795581 如果想要实现窗口全屏,并且还有状态栏,会出现问题,那就是OnGetMinMaxInfo函数的作用。你可以试一下,如果把这个函数去掉,则当你按下工具栏中的全屏显示按钮 时,框架视图确实变大了,但没有想象的那样实现全屏显示,底边留下一个状态栏——一个有些发育不良的全屏显示窗口。为转载 2017-04-28 15:45:21 · 4586 阅读 · 0 评论 -
VC++中的编码转换,多字节宽字节转换
转自:http://www.youranshare.com/blog/sid/35.html在MFC中字串类是CString,std中是string、wstring,他们之间差别是内部包含的字符编 码 不一样,本文中介绍了几个微软的宏,可以轻松的对这几种字串进行转换. · CString、CStringA,CStringW的关系在MFC的工程转载 2017-03-14 14:13:21 · 2949 阅读 · 0 评论 -
win32 API 实现ftp
转自:http://blog.youkuaiyun.com/cddchina/article/details/38727545ftp相关 API函数 FTP 函 数 描 述 InternetOpen 初始化 Win32 internet InternetConnect 打开一个FTP, HTTP, or Gopher 应用会话 FtpCreateDir转载 2016-11-24 16:55:30 · 2365 阅读 · 0 评论 -
VC++中多字节与宽字节转换
引用头文件:atlbase.h,其中USES_CONVERSION;是必须的,要不然 下面代码不能通过编译。[cpp] view plain copy print?// 宽字节与多字节转换,必须先使用USES_CONVERSION宏 // 参见下面代码详细说明请查阅MSDN USES_CONVERSION; printf("%s\转载 2016-11-30 14:32:08 · 1056 阅读 · 0 评论 -
各种消息下wParam及lParam值的含义
转载:http://blog.youkuaiyun.com/cto_51/article/details/8828068 各种消息下wParam及lParam值的含义01、WM_PAINT消息LOWORD(lParam)是客户区的宽,HIWORD(lParam)是客户区的高 02、滚动条WM_VSCROLL或WM_HSCROLL消息LOW转载 2016-05-06 18:14:20 · 1102 阅读 · 0 评论 -
vc定制控件消息处理函数
一、概述控件的消息处理函数是由系统定义好了的,通常情况下,不需要自己提供。但当需要对控件进行特殊控制时,可以提供一个消息处理函数,替换原来的消息处理函数。自己的处理完成后,再调用控件的缺省消息处理。二、相关函数1.窗口类的属性可以通过GetWindowLong和SetWindowLong进行读取和设置LONG GetWindowLong( HWND hWnd,转载 2016-04-21 16:45:18 · 932 阅读 · 0 评论 -
VC修改窗口属性
转载 http://blog.youkuaiyun.com/parrylau/article/details/6862685修改窗口属性说明:以下函数对于POPUP窗口有效,对于子窗口好像不行。//最小化按钮有效::SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE) | WS_MINIMIZEBOX );转载 2016-05-16 17:32:13 · 865 阅读 · 0 评论 -
VC父窗口和子窗口
转载:http://www.cnblogs.com/BeyondTechnology/archive/2011/03/25/1995934.html一、概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、par转载 2016-05-16 16:05:41 · 2114 阅读 · 0 评论 -
VC代码设置禁用窗口最大化按钮禁用拖拽
其实就是修改窗口style,简单到直接贴代码: LONG Style; //获得窗口风格 Style = ::GetWindowLong(m_hWnd,GWL_STYLE); //去除最大化功能,固定尺寸 Style &= ~(WS_MAXIMIZEBOX)&~WS_THICKFRAME; ::SetWindowLong(m_hWnd,GWL_STYLE,Style);原创 2016-05-28 12:09:15 · 1994 阅读 · 0 评论 -
WM_ACTIVATE窗口激活消息
消息: WM_ACTIVATE参数: fActive = LOWORD(wParam); // activation flag fMinimized = (BOOL)HIWORD(wParam); // minimized flag hwndPrevious= (HWND)lParam; // window handlefActive 参数表明窗口是被激活还是原创 2016-05-28 12:05:40 · 18889 阅读 · 0 评论 -
模态对话框与非模态对话的几种销毁方法与区别
模态对话框与非模态对话的几种销毁方法与区别 先着一个注意点,自己误识了好久:CloseWindow是一个函数,可以用来最小化指定的窗口,但并不销毁该窗口。先说下模式对话框调用的原则。在模式对话框下,用CDialog::OnOK()或CDialog::OnCancel()以及CDialog::OnClose()关闭对话框。一定要注意之前的C转载 2016-05-26 16:00:46 · 4762 阅读 · 0 评论 -
内存中常见异常值的解释(比如0xcccccccc、0xcdcdcdcd和 0xfeeefeee 异常值 )
转载:http://blog.youkuaiyun.com/chenlycly/article/details/23708049* 0xcccccccc : Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory* 0xcdcdcdcd : Used by Microsoft's转载 2016-05-25 14:01:36 · 1014 阅读 · 0 评论 -
ASCII、Unicode、GBK和UTF-8
ASCII、Unicode、GBK和UTF-8字符编码的区别联系很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在美国用。八转载 2016-04-09 13:47:21 · 482 阅读 · 0 评论