vc
文章平均质量分 71
曾经去过跨越一个小时的地方
无心插柳柳成荫才是美丽,有哪种美好会来自于刻意。这一生波澜壮阔或是不惊都没问题,只愿你能够拥抱那种美丽。
展开
-
VC获取屏幕分辨率
VC获取屏幕分辨率这里总结下VC得到你屏幕的当前分辨率的方法:int width = GetSystemMetrics(SM_CXSCREEN);int height = GetSystemMetrics(SM_CYSCREEN);原创 2017-02-08 16:00:40 · 1190 阅读 · 0 评论 -
ATL::CComPtr::operator& 断言 Expression: p == 0 原因分析
一、引言最近在开发过程中,在使用 ATL::CComPtr 的时候,总会出现一个断言提示:另外,在断言出现处点击“重试”,又可以定位到具体出错的地方://The assert on operator& usually indicates a bug. If this is really //what is needed, however, take the address of the p m原创 2017-06-20 11:06:34 · 967 阅读 · 0 评论 -
点击按钮关闭真窗口崩溃原因探讨
一、引言在工作中,经常会遇到这样的问题: 点击窗口上的一个按钮,使该真窗口关闭 。 而此时如果关闭窗口的逻辑是直接拿着句柄销毁窗口,则会发生崩溃的现象。 这是为什么呢? 这是因为鼠标弹起的 LBUTTONUP 的消息发到窗口对象的时候,此时窗口对象已经不存在了,而访问不存在的对象就会发生崩溃的现象。这个问题确实很有意思,那么这个问题该如何解决呢?二、请教老大之后的觉悟我老大原创 2017-06-22 21:43:17 · 861 阅读 · 0 评论 -
问题解决:error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”
一、引言最近在编译运行有关 cef 的项目的时候,发现总会出现这样的编译问题:libcef_dll_wrapper13d.lib(process_message_ctocpp.obj) : error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”(HTMLEventHandler.obj 中)这里,我要编译的项目的原来的编译平台是 Visual Stu原创 2017-07-29 18:15:09 · 37310 阅读 · 12 评论 -
简单 Demo:C++编写、调用动态链接库
一、引言最近在使用 C++11 刷 LeetCode 的同时,渐渐萌生了自己写一个 LeetCode 内置数据结构库的想法。比如说,只需要输入: [1, 2, null, 3]就可以自动将其转化为二叉树的功能。不过这里扯远了,要想自己写一个库,那么第一步就是如果编写一个能够方便让其他项目调用的库项目。这里我选择了动态链接库。接下来,我将一步一步地建立一个 DLL 项目,并编写一个测试项目来调用原创 2017-07-18 22:23:20 · 13261 阅读 · 6 评论 -
简单Demo:动态调用自己编写的动态链接库
一、引言在上一篇博客里,我主要实现了使用 C++ 自行编写和静态调用动态链接库的功能。这里附上上一篇博客的地址: 简单 Demo:C++编写、调用动态链接库动态链接库除了可以静态调用外,还可以动态调用。可能这里对术语不熟悉的同学就会搞混了以下这几个概念:这里通过查找资料,找到了以下的这四个术语的定义: 静态链接库:就是把 (lib) 文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需原创 2017-07-19 10:19:14 · 2485 阅读 · 0 评论 -
锁屏的一个有趣的问题:HWND_TOP 与 HWND_TOPMOST 漫谈
一、引言今天遇到了一个非常有趣的问题,问题背景是一个用户反馈了这么一个问题: 当软件已经被锁屏了: 1. 用户点击出一个窗口显示(这是一个真窗口) 2. 此时用户再通过停靠在侧边的 QQ 界面,仍然可以通过点击里面的 QQ空间 图标点开网页,从而进入浏览器界面根据我们软件的需求,进入了锁屏界面,就不应该再能让用户进入其他软件界面了才对。那么,这个问题究竟是什么原因呢?是什么原因引起原创 2017-08-07 21:28:12 · 8368 阅读 · 0 评论 -
编译问题解决:LINK : fatal error LNK1104: 无法打开文件“*.dll”
一、引言编译项目的时候,总会遇到些奇怪的问题,比如说以下这种: LINK : fatal error LNK1104: 无法打开文件“..\bin\utilitiesd.dll”我在编译一个动态链接库项目的时候出现的问题,其中 utilitiesd.dll 应该是该项目的输出文件,而此时却显示无法打开该文件。觉得非常匪夷所思 T_T明明是我要输出的文件,你却告诉我无法打开,这是因为什么原因呢?原创 2017-07-24 14:39:48 · 26938 阅读 · 4 评论 -
VS 搜索内容失败怎么办
一、引言在日常使用 VS 的时候,总会遇到尴尬的地方: 搜索不到? 搜索不到?! 不可能搜索不到呀!!!遇到这种情况,我们暂且只能认为是 VS 的问题,那么我们还要继续工作的,怎么办呢?二、VS Code 强大的搜索功能在这里,我推荐一块比较强大的开源的微软旗下的编辑器软件 VS Code。当使用 VS 搜索不到你想要的内容的时候,你就可以打开 VS Code: 打开文件原创 2017-09-23 11:53:54 · 1180 阅读 · 0 评论 -
编译问题探索:LINK : fatal error LNK1104: cannot open file ‘PocoFoundationmt.lib’
一、引言有一次在工作中遇到了这样一个问题: LINK : fatal error LNK1104: cannot open file ‘PocoFoundationmt.lib’这个问题很奇怪,甚至于 PocoFoundationmt.lib 是在哪里调用的我都不是很清楚。二、问题解决这个问题是我的另外一个同事解决的,参考如下社区讨论: LINK : fatal error LNK1104:原创 2017-09-18 11:28:02 · 7043 阅读 · 0 评论 -
关于客户端与服务端通信的一点感悟
一、引言一直以来在公司从事于桌面客户端的开发,从事已有一年有余,却直到今天才领悟了客户端是如何与服务端进行通信的。这一方面大大得益于“Web Scraping with Python”作者对于 API 相关内容的描述,这不是我第一次接触 API,却是我第一次系统的了解 API。那么这篇博客也是我的一点感悟,围绕以下几个问题开展:1. 客户端如何与服务端一直保持联系?2. 客户端如何与数据库进行通信?原创 2017-11-01 11:50:21 · 1008 阅读 · 1 评论 -
问题解决 NMAKE : fatal error U1077: “rc”: return code“0x1” Stop.
一、引言最近在编译 OpenSSL 的时候,出现了这个问题: NMAKE : fatal error U1077: “rc”: return code“0x1” Stop.很明显,这是当前命令行工具未能识别 rc 程序所导致的。二、解决这个问题看了很多方法,都不是很奏效,于是我就使用了笨方法: 在 C 盘目录下搜索 rc.exe最后,找到了一系列含有 rc.exe 的目录,在其中选择 M原创 2017-11-14 14:54:02 · 21255 阅读 · 1 评论 -
Windows核心编程:MultiByteToWideChar 与 WideCharToMultiByte 的正确用法
一、引言学习到 《Windows 核心编程》(第五版)P28 的时候,看到了作者对于多字节字符串与宽字符字符串相互转换的精妙的描述,忍不住写了一个 Demo 来整理作者的思路。联想到在实际工作中,多字节字符串与宽字符字符串的相关转换是非常常见的,并且对于 MultiByteToWideChar 和 WideCharToMultiByte 的函数存在滥用误用的情况,因此认真整理了一下。二、实例 Dem原创 2017-11-29 16:08:25 · 619 阅读 · 0 评论 -
Windows核心编程:使用 CreateMutex 防止运行应用程序的多个实例
一、引言这块代码来源于 《Windows 核心编程》(第五版)P50 页。一直以来对于防止运行应用程序多个实例有一个大体的代码印象(就是来源于这里),但是一直苦于没有好好整理,今天就贴上这份简单的代码,一来方便自己整理学习,二来以飨读者。二、代码这里直接贴上我运行测试成功的代码:#include <tchar.h>#include <windows.h>int WINAPI _tWinMain(H转载 2017-11-29 20:28:05 · 1047 阅读 · 0 评论 -
(转) 让程序在崩溃时体面的退出
这是我在搜索有关崩溃处理的时候看到的博客。该博客: 1. 从一开始的 __try/__exception/ __finally 讲解2. 到提出SetUnhandledExceptionFilter 设置异常回调处理函数机制3. 再提出了 Dump 文件的创建4. 最后将上述 3 种方式糅合在一起从表入里深入的讲解了 Windows 平台下使用 C++ 处理程序崩溃的问题以及各种解决办法。真的是深转载 2017-12-13 16:48:02 · 274 阅读 · 0 评论 -
GetHostWnd() 与 GetActiveWindow() 的用法区别
一、引言最近工作中遇到了一点小问题: 首先我在主窗口上创建了两个子窗口,然后想要让其中的一个子窗口置顶。 但是很无奈,使用了 SetWindowPos() 方法怎么都置不了顶,反而还被另外一个子窗口一直压在下面; 更奇怪的是:当我切换了其他程序后,再切换回来,我想要置顶的子窗口就置顶了。这是一个奇怪的问题,最后在老大的帮助下解决了这个问题。是因为我在主窗口下创建子窗口时,使原创 2017-05-08 17:51:52 · 1456 阅读 · 0 评论 -
error LNK2019: 无法解析的外部符号 _GET_X_LPARAM,该符号在函数 _WndProc@16 中被引用
一、引言我们在响应 WM_SIZE 或者 WM_MOUSEMOVE消息的时候,会需要从 lParam 参数中获取到当前客户区的大小啦鼠标的位置信息等等。但是经过查询了MSDN文档后,我们得知,利用LOWORD 和 HIWORD 宏获取位置信息在多显示器的情况下是会有问题的,推荐使用 GET_X_LAPRAM 和 GET_Y_LPARAM 替代之。error LNK2019: 无法解析的外部符号 _GET_X_LPA原创 2017-04-12 22:09:57 · 2882 阅读 · 1 评论 -
无限重启病毒
无限重启病毒在鱼C论坛上看到的,觉得挺有趣的,就copy过来了。实际上就7行代码,废话不多说,直接上代码。#include<stdlib.h>int main(){ system("reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v restart /t REG_SZ /d \"C:\\转载 2017-03-02 16:49:11 · 2332 阅读 · 0 评论 -
VS的VC项目转移过程中可以删除的文件
引子在项目开发过程中,总需要从一台电脑上转移代码到另一台电脑上,但是VS的项目动辄好几百M,而这些文件并不是都需要的。那么为了最小文件大小,又可以在另外一台电脑上顺利编译项目,需要携带或者说需要删除项目中的哪些文件呢?一个例子这里以我自己编写的一个VC项目为例,看看能删除哪些文件。现在先打开项目工程文件夹,查看项目工程文件夹的大小。可以看到,项目目前大小为119MB,让我们打开看看里面有哪些文件。原创 2017-03-07 18:04:02 · 8064 阅读 · 0 评论 -
时间类型转换:将COleDateTime转换为INT64类型
引言最近工作上遇到了这样的问题,一个接口的一个调用参数是需要传入一个 INT64 类型的数据,然而现在另外一个同事给我的数据类型形如 2017-3-24 这样的数据类型,我该如何转换成 INT64 类型的时间数据呢?解决方案展开了大量的搜索大法,发现这样的问题很少有人遇到。通过折返走了好大一圈,终于找到了解决的办法,这个办法或许不是最好的办法,也将将可以使用了。// 将形如 "2017-03-24"原创 2017-03-24 11:19:47 · 1369 阅读 · 0 评论 -
输入框如何限制输入字数的方法
之前研究过这个问题,研究了很久,什么研究输入框的特性啦、如何屏蔽用户的输入消息之类的东西。最后在 MSDN 上的某处代码中得到了启发:与其说是限制字数,也可以说是截断字符串,也就是说当我们每输入一个字的时候,判断总体字符串是否大于了最大值,如果大于,则直接截取即可。就这么简单!!!给用户的感觉就像是,诶,好像是不能输入了。其实我们程序做的事情就是,获取用户输入的字符串,然后按最大值截取,然后再粘贴回原创 2017-03-24 17:18:28 · 3235 阅读 · 0 评论 -
支持VS2017的vax插件VA_X_Setup2210
自从3月7号VS2017正式版发布,因为没有破解的vax插件可用,忍受了几天没有vax的日子。可能是本人能力不够,觉得一旦离开了vax好像就不会写C++代码了。 找了很久也没找到可以使用的vax插件,这里友情奉献!!! 支持VS2017的vax插件VA_X_Setup2210下载地址原创 2017-03-16 14:18:26 · 7034 阅读 · 1 评论 -
vs项目筛选器显示错乱、只显示部分文件
简要介绍有时候,我们从网上下载下来的代码,打开项目一看,诶,怎么只有Generalted Files、Header Files和Source Files的分类呢,并且还有许多文件例如xml文件等,根本就找不到呢,这些项目难道从一开始建立项目就是这么杂乱无章的吗?这样怎么能够有条理的写代码呢? 例如下图: 根本原因vs默认以筛选器打开项目,但是有些项目是以文件分类的,这时候只需要“项目”->“显示原创 2017-02-22 13:57:24 · 1378 阅读 · 0 评论 -
SOUI假窗口释放资源后操作界面控件崩溃
简要介绍当用户打开了一个假窗口,之后调用了释放资源的函数比如Detach()函数,而在此之前并未关闭界面,这个时候用户再点击界面上的按钮,就会发生界面级的崩溃,这是因为相关的界面资源已经被释放了的原因。规避方法规避方法很简单,就是在释放资源前保证界面关闭,让用户操作不了界面即可。 总而言之,释放资源前一定要确保当前资源不会再被调用;这与指针是一样的,被释放前一定要确保没有人调用,释放后一定不要再用原创 2017-02-22 11:47:27 · 804 阅读 · 0 评论 -
自定义消息
简要介绍实现自定义消息,主要是让界面能够灵活地处理一些windows未定义的一些行为。实现步骤定义消息宏// [TestMsg.h]#define WM_USER_CLEAR_CACHE_FINISHED WM_USER + 0x0529定义响应消息函数:注意这是消息函数的固有格式// [TestMsg.h]LRESULT OnClearCacheFinished(UINT uMsg,原创 2017-02-21 19:36:53 · 467 阅读 · 0 评论 -
实现关机重启后文件操作
使用Windows API函数MoveFileEx函数原型 BOOL MoveFileEx(LPCTSTR lpExistingFileName, // file nameLPCTSTR lpNewFileName, // new file nameDWORD dwFlags // move options);这里附上MSDN的官方解释 If dw原创 2017-02-08 16:36:50 · 819 阅读 · 0 评论 -
字符串转换
字符串转换在这里摘录各个字符串相互转换的方法,遇到不懂的转换时,在网上查询到信息、调试运行成功后,也要及时更新到这里整理记录。 * std::string转BSTR 这里要注意的是,需要包含一个头文件<comutil.h> std::string name = "nisb"; _bstr_t bstr_t(name.c_str()); BSTR ret_原创 2017-02-08 16:02:34 · 596 阅读 · 0 评论 -
代码赏析:子窗口对于键盘和鼠标的响应
一、引言首先声明,代码并不是我写的;其次,代码是我在小甲鱼的《Win32 SDK程序设计》系列教程的第41讲中看到的。因为本人一方面在学习这个教程,一方面也对于优美的代码有着自己的独特的爱好,所以在这里书写博客予以分析(代码应该是出于《windows程序设计》第5版的书例代码)。那么这份代码是为了完成什么功能呢?在一个父窗口中绘制 5 X 5 的 25 个宫格的子窗口,其中子窗口以矩形边框显示鼠原创 2017-04-17 00:12:26 · 2002 阅读 · 0 评论 -
VS 高级版本新建的项目如何降级使低版本 VS 可以打开
一、引言这里因为工作的原因,公司项目使用的是 VS2015 的编译环境,但是因为程序员永远是喜欢最新的 IDE 的原因,所以我一直都在使用 VS2017 进行工作。但是最近出问题了,我用 VS2017 新建了一个项目,写了一个小小的 demo ,想要上传到公司项目上去,这时候看到图标我就傻眼了。这时候发现,项目中的图标已经变了,因为之前一直用的 VS2015,所以应该是 VC 版本为 14 才对。这原创 2017-04-21 15:58:40 · 26868 阅读 · 1 评论 -
如何禁用文本框输入中文
一、引言最近在工作中遇到了这样的问题: 目前的密码输入框可以输入中文,需求要求提示用户不可以输入中文那么,如何限制用户不能输入中文呢?二、厉害了,我的 ASCII 码网上搜寻了很久,有各种答案,尤其是正则表达式的方法,函数看得云里雾里的。最后在一个论坛里面看到了一位仁兄非常简洁的一个算式:ascii > 255顿时恍然大悟,厉害呀我的哥!这里,中文字符的编码定然大于 255 的编码,一般密码输原创 2017-05-12 11:32:27 · 1611 阅读 · 0 评论 -
如何设置窗口立即刷新显示
遇到一个问题: 清理缓存的时候,当缓存大于200M的时候,用户退出程序会显示一个对话框,这个对话框会提示用户清理缓存,当用户点击了“清理”按钮的时候,则会隐藏按钮并且提示用户“当前正在清理中…”的字样,当清理完毕后,则会显示“清理完成”;而如何让界面及时的显示“正在清理中…”的字样则是问题所在 这个问题的根本原因是什么呢? 很简单,就是没有及时通知windows重绘窗口;那如何通知wind原创 2017-02-20 15:53:42 · 6391 阅读 · 1 评论 -
一点点另外的思考:CRT 跨 DLL 边界传递 CRT 对象时可能出现的问题
一、引言在昨天探索和学习 libcurl 库的时候,在 libcurl 库的源代码中的 FAQ 文档中有这么一句话我非常上心: As a general rule, building a DLL with static CRT linkage is highly discouraged, and intermixing CRTs in the same app is something...原创 2018-08-14 13:22:12 · 696 阅读 · 2 评论