C/C++
文章平均质量分 85
kikay
葵花在手,天下我有!
展开
-
CDockablePane使用心得
最近做项目使用到了MFC的CDockablePane进行布局,下面将应用心得以九个例子进行总结如下: 1. CFrameWndEx 在框架类的头文件中定义一个CDockablePane的数组CDockablePane m_Panes[5];//一个CDockablePane的数组2. CFrameWndEx:: OnCreate() 在Create函数中自动生原创 2013-05-16 21:05:04 · 8224 阅读 · 9 评论 -
system权限实现屏幕截屏
首先必须了解几个重要的概念:窗口站(WindowsStation)和桌面(Desktop)是Windows操作系统底层暴露给Windows API的执行体对象(Windows内部有两种类型的对象:执行体对象和内核对象。执行体对象指由执行体的各种组件如进程管理器、内存管理器等等所实现的对象。内核对象是由Windows内核实现的一组更基本的对象)。其中,窗口站对象包含了一个剪贴板、一组原创 2015-03-04 12:12:49 · 4498 阅读 · 5 评论 -
C#嵌入dll到资源释放的问题
有些程序的时候,可能调用外部的dll,这个时候提供给客户的时候,可能经常不小心丢失这些dll,因此可以考虑将这些dll嵌入到资源中,启动的时候进行释放。对于托管的dll,可以用打包软件合成一个exe(例如利用Imerge),但是对于一些用C++等写的非托管的dll,就比较麻烦。在这种情况下,可以考虑本文介绍的方法。 1、将需要用到的dll文件嵌入资源文件中。(1)将需要用到的dll文件拷贝到工原创 2015-03-22 11:50:39 · 36600 阅读 · 3 评论 -
C++虚析构函数
在用C++编写类的时候,我们通常把析构函数申明为虚函数,这是为什么呢?我们看一下这样的两个类:#include #includeusing namespace std;//父类class CBase{public: //构造函数 CBase() { cout<<"Create CBase"<<endl; } //析构函数 ~CBase() { cout<<"原创 2015-03-30 00:06:48 · 571 阅读 · 0 评论 -
关于inet_ntoa函数的思考
最近写程序,发现一个有趣的问题。先看下面的代码: #include <stdio.h>#include <stdlib.h>#include <WinSock2.h>#pragma comment(lib,"WS2_32")void main(){ struct in_addr addr1, addr2; unsigned int uip1, uip2; uip1原创 2015-05-02 09:10:52 · 2030 阅读 · 0 评论 -
几种编程语言的Lambda Expression初探
几乎所有主流开发语言支持编程语言都提供了对Lambda Expression的支持,毕竟好用嘛。初探下Python、C++、C#、PHP以及Javascript的Lambda Expression。原创 2016-05-12 21:05:05 · 1729 阅读 · 1 评论 -
Windows守护进程的一种简单实现
一讲到守护进程,很多人都想到了Linux系统,确实在Windows上这个说的比较少。今天上午群里有个朋友问我了下Windows下守护进程的实现问题,我想了想,简单用C++写了个小例子,用来实现系统开机自启动(注册表启动),然后启动并守护指定的进程。基本功能还是挺简单的。和大家分享一下,直接上代码了哈。原创 2016-05-13 14:51:54 · 36861 阅读 · 11 评论 -
C++通过Callback向C#传递数据
现在比较流行C#与C++融合:C#做GUI,开发效率高,C++做运算,运行效率高,二者兼得。但是C++与C#必然存在数据交互,C#与C++dll的数据交互从来都是一个让人头疼的问题。转载 2017-05-31 11:03:45 · 3130 阅读 · 0 评论 -
构建Visual Studio Code编译调试Linux C++环境
Visual Studio Code是微软公司推出的一款可以跨平台(Mac OS X、Windows、Linux)的轻量级IDE,支持C/C++/C#/Python等多种语言环境,与其说它是IDE,还不如说是代码编辑器,只不过可以进行合理的配置,来实现IDE的功能。默认的界面风格类似于Sublime,我比较喜欢,与一些重量级C++ IDE相比,也比较小巧,是非常值得推荐的一块编译调试工具。原创 2017-08-23 10:31:32 · 5265 阅读 · 0 评论 -
C++嵌入DLL到资源运行释放的问题
以前写过一篇博文C#嵌入dll到资源释放的问题。虽然相对于C#,C++中嵌入DLL到程序资源中,然后再释放出来的应用场合并没有那么多,但是还是有必要了解下一般的过程。结合本人在实际工作中解决此类问题的实践思路,这里介绍下最基本的一种解决方案。1 嵌入DLL到资源有些程序运行的时候,可能调用外部的DLL,用户使用时可能会不小心丢失这些DLL,导致程序无法正常运行,因此可以考虑将这些DLL嵌入到资源中,原创 2017-09-16 18:29:08 · 6350 阅读 · 0 评论 -
sqlite中文乱码问题解决方案
在VC++中通过sqlite3.dll接口对sqlite数据库进行操作,包括打开数据库,插入,查询数据库等,如果操作接口输入参数包含中文字符,会导致操作异常。例如调用sqlite3_open打开数据库文件,如果文件路径出现中文,就会导致打开失败。sqlite3_exec执行sql语句,如果包含中文对应字符就会变成乱码。这是由于sqlite数据库使用的是UTF-8编码方式,而传入的字符串是ASCII转载 2014-03-31 19:04:45 · 1562 阅读 · 0 评论 -
C#和C++结构体Socket通信
最近在用C#做一个项目的时候,Socket发送消息的时候遇到了服务端需要接收C++结构体的二进制数据流,这个时候就需要用C#仿照C++的结构体做出一个结构来,然后将其转换成二进制流进行发送,之后将响应消息的二进制数据流转换成C#结构。 1、仿照C++结构体写出C#的结构 using System.Runtime.InteropServices; [Serializab转载 2014-02-08 10:53:58 · 919 阅读 · 1 评论 -
在View视图类中使用CSplitterWnd来拆分视图窗口(不在CMainFrame类的虚函数OnCreateClient中拆分视图框架窗口)
[cpp] view plaincopy// View.h CSplitterWnd m_wndSplitter; BOOL m_bSplitter; // 初始化为FALSE // View.cpp int CXXXView::OnCreate(LPCREATESTRUCT lpCreateStruct) {转载 2013-05-07 08:17:35 · 1417 阅读 · 0 评论 -
C++字符串类型的转换
string,CString,int,char*之间的相互转换《C++标准函数库》中说的有三个函数可以将字符串的内容转换为字符数组和C—string1.data(),返回没有”\0“的字符串数组2.c_str(),返回有”\0“的字符串数组3.copy() ===========================================原创 2013-05-05 07:30:43 · 1805 阅读 · 0 评论 -
VS2008中CDockablePane停靠框
VS2008中对于MFC的MDI程序界面做了增强,支持很炫的的布局效果,之前还在说不能用CDialogBar类,现在完全可以使用CDockablePane类替代了,现在只需要新建一个继承自CDockablePane的新类,就可以在其上添加各种控件了,如组合框、对话框等,现在尝试添加一个对话框。 新建一个MFC的多文档程序,如在Wizard中选择标准的MFC MDI转载 2013-05-03 10:10:31 · 1697 阅读 · 0 评论 -
CDockablePane的使用
编译环境:win7编译工具:VS2010 内容一:新建一个CDockablePane派生类。新建一个单文档 从CDockablePane派生出一个Pane类 在MainFrm中加入:Pane pane; 在MainFrm的OnCreate的方法中加入// TODO: 在此添加您专用的创建转载 2013-05-03 09:05:22 · 1210 阅读 · 0 评论 -
(MFC)Vs2010打造Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图)
一直比较喜欢Visual Studio两侧的窗口,可以来回滑动,并且和点击图钉,钉住悬浮的窗口。那就尝试着如何去做出来。VC++6.0如果要去实现的话,不是不可以,但是得借助第三方的类库,比如说,ToolKit,但是非常的麻烦。 Visual Studio里面的新建Demo就可以实现这一功能,何乐而不为呢!!!那停靠窗口里面用什么填充呢? 树形控件??新建的Demo里有了。更直观转载 2013-05-02 21:29:53 · 2219 阅读 · 0 评论 -
关于C++中的char*与wchar_t*这两种类型的相互转换
把char*转换为wchar_t*用stdlib.h中的mbstowcs_s函数,可以通过下面的例子了解其用法: char *CStr = "string to convert";size_t len = strlen(CStr) + 1;size_t converted = 0;wchar_t *WStr;WStr=(wchar_t*)ma原创 2013-04-27 21:31:36 · 1001 阅读 · 0 评论 -
跨平台Linux与Windows的一点小结
搞了几个跨Linux与Windows的项目,碰到很多问题,记下来,以供查考。另外,因为水平的原因,肯定错误在所难免,请读者一定指正。 如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境。 下面大概分几个方面进行罗列:socket Linux要包含[cp原创 2013-04-26 11:16:35 · 1471 阅读 · 0 评论 -
线程递归互斥:ACE_Recursive_Thread_Mutex类
ACE_Recursive_Thread_Mutex实现了wrappe模式,该类的功能在于允许同一个线程内可递归的获取和释放mutex。 成员函数1. ACE_Recursive_Thread_Mutex调用函数ACE_OS::recursive_mutex_init初始化互斥量说明:函数ACE_OS::recursive_mutex_init根据具体的操作系统分别调用ACE_OS::th原创 2013-04-27 19:59:58 · 999 阅读 · 0 评论 -
VC 中窗口的销毁
基础知识很重要,Win32中的窗口句柄和MFC窗口类对象的2个概念。前者被后者包装了起来。先看下MSDN中的TN017中的文章In the case of C++ Windows objects that do perform auto-cleanup, you must callDestroyWindow. If you use operator delete direc转载 2013-05-19 15:44:50 · 886 阅读 · 0 评论 -
C#调用Win32 C++动态链接库那些事
利用C#设计前端显示界面,C++完成后台算法和功能,是现在比较流行的一种桌面软件研发搭配。通常的做法就是C++封装成动态链接库接口,供C#来调用。这种做法最麻烦的是两者之间数据传递的问题,因为C#和C++之间的数据类型是不一样的,而且在实际应用中还存在一些未知的坑。原创 2017-09-08 10:20:23 · 1684 阅读 · 1 评论