技术
文章平均质量分 78
SONG_CA
做电力行业应用EMS/DMS设计与开发,使用C++13年,目前在北美,从事变电站自动化设计、开发及集成应用
展开
-
左值/右值/左值引用/右值引用/万能引用/移动语义/完美转发,你真的懂了吗?
右值引用和左值引用类似,都是为一个量(对象)起了个别名,操作右值引用和左值引用等价于操作被引用量本身。原创 2023-12-10 01:26:23 · 82 阅读 · 1 评论 -
SQL中,如何正确理解字段值NULL
工作性质转向数据库居多, 于是花了些时间强化数据库知识,在看到case when 结合sum的用法时,看到一个例子,于是引出了本片文章。下面的SQL语句,用来创users建表,并依次添加8条记录,注意有3条记录的SEX字段没有赋值,默认为NULL。SQL> create table users(id int,name varchar2(20),sex number);SQL> insert into users(id,name) values(1,'张一');SQL> inse.原创 2021-06-24 23:40:58 · 474 阅读 · 0 评论 -
Windows内存结构 .
1.进程虚拟地址空间布局: 每个进程都被赋予它自己的虚拟地址空间。对于3 2位进程来说,这个地址空间是4GB,Win2K在IA-32架构的CPU下面的进程地址空间分布如下表所示: 可见Win2K的内存布局非常简单,主要有4个部分,两个不能被存取的64K;然后剩下的部分就是分别是用户空间(2G–128K)和转载 2013-01-28 01:32:01 · 686 阅读 · 0 评论 -
CString实现原理
MFC中CString类的实现在strcore.cpp中,Cstring封装了一个用来存放字符串的缓冲区和对施加于这个字符串的操作。也就是说 ,CString里需要有一个用来存放字符串的缓冲区,并且有一个指针指向该缓冲区,该指针就是LPTSTR m_pchData。但是有些字符串操作会增建或减少字符串的长度,因此为了减少频繁的申请内存或者释放内存,Cstring会先申请一个大的内存块用来存放字符串转载 2013-01-28 01:47:23 · 547 阅读 · 0 评论 -
成员函数和运算符的重载
成员函数和运算符的重载一、构造函数的重载构造函数可以重载,使得生成实例时非常方便。构造函数一般要对成员变量赋初值,有2种写法:#include #include using namespace std;class stuff { string name; int age;public: stuff() { //这是写法一转载 2013-04-05 20:32:40 · 831 阅读 · 0 评论 -
MFC 中位图的使用
1. 获得目标DC句柄2.创建一个与目标DC兼容的内存DC3.将位图句柄选到内存DC上,同时保存旧的位图句柄4.使用GetObject 函数获取位图的内容5.使用BITBL函数将内存DC中的位图拷贝到目标DC上(这种方法也经常被用来解决闪屏问题)6.不要忘记将位图从内存DC中选出来(必须,因为一个位图被选进一个内存DC后,如果不释放,该位图无法再次被选进)7.销毁内存DC原创 2013-04-01 23:18:29 · 955 阅读 · 0 评论 -
MSCOMCTL.OCX 中的LISTVIEW控件各类异常终极解决方案
在一个VB工程或者VBA工程中(以下简称VB应用)用到MSCOMCTL.OCX 中的LISTVIEW控件,经常遇到一些莫名其妙的问题,比如:在机器A上运行正常,一段时间后,在A上无法运行了,即便你再重新注册你的MSCOMCTL.OCX文件,任然无法正常工作在机器A上运行正常,到机器B无法运行 在机器A上运行正常,在机器B上编辑过VB应用后,在A上无法运行了 正好这几天就碰原创 2012-11-28 04:25:40 · 7760 阅读 · 0 评论 -
如何扑捉到WM_NCLBUTTONUP(OnNcLButtonUp)消息
在点击标题栏,一直获取不到WM_NCLBUTTONUP消息。查了一下MSDN,说是当在非客户区点击鼠标时,窗口可以截获WM_NCLBUTTONDOWN,然后可以截获WM_ENTERSIZE消息,然后该窗口就被SetCapture(不再产生非客户区的消息了;同时所有的鼠标消息,即便鼠标不在这个窗口上的操作,也被传到这个窗口的窗口函数来处理。我一直没有搞清楚后面一条的应用场景),然后进入moving原创 2012-12-29 04:06:35 · 2193 阅读 · 0 评论 -
有关DLL的几个问题
一、DLL被多个进程调用问题Win32系统会确保内存中只有一个该DLL的拷贝,这是通过内存映射文件来实现的。不同的进程分别将这份DLL的代码段地址映射到自己的进程空间中,同时不同的进程在自己的进程空间分别有各自的一份该DLL的数据段拷贝。这是因为,在Win32环境中,每个进程都有了它自己的地址空间,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的进程所有。当进程在载入DLL时,操原创 2012-11-30 23:42:10 · 1959 阅读 · 0 评论 -
什么是模板
一、什么是模板?模板是实现代码重用机制的一种工具,实质就是实现类型参数化,即把类型定义为参数。两类模板,一是函数模板,二是类模板。所谓函数模板,就是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟原创 2012-06-14 23:27:26 · 2306 阅读 · 0 评论 -
Can't find dll entry point GetModuleHandleA in kernel32
最近在用COOPER的变电站自动化产品的HMI做二次开发,很简单,VBA开发。由于技术手册简单,技术服务 also too bad,被逼无奈,我准备在VBA中使用HOOK来截获HMI的消息,以便做更多的应用。但在开发这个钩子的时候,遇到了上述问题,GOOGLE了一上午,没发现任何有价值的答案。我做了10多年的c++,对DLL还是非常熟的。无非两种原因导致这种情况,一是DLL本身没有导出这个函数原创 2012-04-13 23:44:41 · 1479 阅读 · 0 评论