DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 541 评论 :: 1614万 阅读
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

10 2012 档案

摘要:JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org/,本文不再对json做介绍,将重点介绍c++的json解析库的使用方法。json官网上列出了各种语言对应的json解析库,作者仅介绍自己使用过的两种C++的json解析库:jsoncpp(v0.5.0)和Boost(v1.34.0)。一. 使用jsoncpp解析jsonJsoncpp是个跨平台的开源库,首先从http://jsoncpp.sourceforge.net/上下载jsoncpp库源码,我下载的是v0.5.0,压缩包大约107K,解 阅读全文
posted @ 2012-10-31 14:57 DoubleLi 阅读(88633) 评论(2) 推荐(3) 编辑

摘要:目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。 静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子。 动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己LoadLibary调入DLL文件,然后再手工GetProcAddress获得对应函数了。有了导入库,你只需要链 阅读全文
posted @ 2012-10-29 19:48 DoubleLi 阅读(456) 评论(0) 推荐(0) 编辑

摘要:若要确定必须与应用程序一起重新发布的 DLL,请收集应用程序所依赖的 DLL 列表。 收集该列表的一种方法是运行理解 Visual C++ 应用程序的依赖项中介绍的依赖项查看器 (depends.exe)。当具有依赖项列表时,将其与 Redist.txt 中的列表进行比较,Redist.txt 默认情况下位于 \Program Files\Microsoft Visual Studio 2010\ 目录中(或 VSINSTALLDIR 环境变量指定的用户定义目录)。 无法重新发布 Visual Studio 中包含的所有文件;只允许重新发布 Redist.txt 中指定的文件。 调试版本的应用 阅读全文
posted @ 2012-10-29 19:44 DoubleLi 阅读(346) 评论(0) 推荐(0) 编辑

摘要:使用 C++ 处理 JSON 数据交换格式一、摘要 JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C++ 语言来处理 JSON。关于 JSON 更具体的信息,可参见 JSON 官网:http://www.json.org。二、本文选择处理 JSON的 C++ 库 本文选择一个第三方库 jsoncpp 来解析 JSON。jsoncpp 是比较出名的 C++ JSON 解析库。在 JSON 阅读全文
posted @ 2012-10-29 19:30 DoubleLi 阅读(819) 评论(0) 推荐(0) 编辑

摘要:Subclassing一个已有的Windows通用控件,可以减少很多工作量。新的控件可以继承被subclass的控件的很多能力,如绘制和对鼠标的响应等。在用MFC ActiveX Control Wizard新建一个工程时,可以选择Subclass a Windows Control,将生成一些必要的代码。我们也可以手工向一个已有的ActiveX工程中加入这些代码:一、重载COleControl::IsSubclassedControl、PreCreateWindowBOOL CDemoSubclassCtrl::PreCreateWindow(CREATESTRUCT &cs){cs 阅读全文
posted @ 2012-10-26 17:52 DoubleLi 阅读(547) 评论(0) 推荐(0) 编辑

摘要:开发工具:1. Visual Studio 2005,用于ActiveX组件的开发2. Microsoft ActiveX Control Pad,用于生成包含ActiveX Control的HTML网页。步骤:1. 通过Visual Studio 2005新建一个MFC ActiveX Control工程,编译之后在debug/release目录下可以找到一个XXXX.ocx文件。具体步骤可以参考MSDN。2. 在ActiveX Control Pad选择菜单File -> New HTML,创建一个HTML页面。3. 从ActiveX Control Pad选择菜单Edit -> 阅读全文
posted @ 2012-10-26 15:33 DoubleLi 阅读(3319) 评论(0) 推荐(1) 编辑

摘要:目标:用JavaScript 脚本代码调用COM控件,实现基本功能操作:1.定义及初始化COM控件;2.调用COM接口;3.注册COM事件并实现事件调用。1. 定义及初始化COM控件 在HTML页面定义一个object标签来加载COM控件:1) classid:是COM控件的编号,用来唯一识别一个COM控件;2) id:是JavaScript调用COM控件时访问的对象,它是全局对象,此处将全局对象命名为ocx;3) codebase:是打包COM的cab包资源路径。可以在后面加上#version=1,0,0,1来发布cab实现自动更新下载。 一起jquery,17jquery 一起jquery 阅读全文
posted @ 2012-10-25 19:25 DoubleLi 阅读(1341) 评论(0) 推荐(1) 编辑

摘要:<script language= "javascript " for= "window " event= "onload ">EVENT event 设置或获取脚本编写用于的事件FOR htmlFor 设置或获取绑定到事件脚本的对象。可以这样理解。<script language= "javascript " for= "window " event= "onload ">相当于<script language= "javascrip 阅读全文
posted @ 2012-10-25 16:55 DoubleLi 阅读(6087) 评论(0) 推荐(0) 编辑

摘要:一、取得显示器的个数GetSystemMetrics(SM_CMONITORS);二、根据窗口句柄、矩形区域、点取得显示器的句柄MonitorFromRect( lprc, MONITOR_DEFAULTTONULL )MonitorFromPoint( pt, MONITOR_DEFAULTTONULL )MonitorFromWindow( pWnd->GetSafeHwnd(), MONITOR_DEFAULTTONULL )三、取得主显示器的句柄//the primary monitor always has its origin at 0,0HMONITOR hMonitor 阅读全文
posted @ 2012-10-25 15:51 DoubleLi 阅读(4532) 评论(0) 推荐(0) 编辑

摘要:一、简单对话框全屏显示方法在OnInitDialog()中任意加入:1、ModifyStyle(WS_CAPTION,0,0); //如果不想去掉标题栏,去掉该句。 SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0); 2、ShowWindow(SW_SHOWMAXIMIZED); 二、复杂一点的对话框全屏显示方法,随屏幕的分辩率而调节void CMainFrame::OnFullScreen() { GetWindowPlacement(&m_OldWndPlacement); CRect WindowRect; ... 阅读全文
posted @ 2012-10-23 20:53 DoubleLi 阅读(4745) 评论(0) 推荐(0) 编辑

摘要:CenterWindow()的用法为: void CenterWindow( CWnd* pAlternateOwner = NULL ); 其中参数pAlternateOwner指向所想居中的窗口的指针。 然后利用函数GetSystemMetrics( int nIndex )得到系统当前设置如屏幕分辨率等。 nIndexs= SM_CXSCREEN 时函数返回屏幕的宽度;返回值单位为像素点。 nIndexs= SM_CYSCREEN 时函数返回屏幕的高度;返回值单位为像素点。 函数BOOL GetWindowPlacement( WINDOWPLACEMENT* lpwndpl ) 是最重 阅读全文
posted @ 2012-10-23 20:53 DoubleLi 阅读(4413) 评论(0) 推荐(0) 编辑

摘要:MFC中可以用 SystemParametersInfo(……) 函数来获取和设置系统信息,如下面例子所示,改变的是系统菜单栏的高度。示例:改变系统菜单栏的高度NONCLIENTMETRICS ncm;ncm.cbSize = sizeof( NONCLIENTMETRICS ); //这个非常重要,否则下面函数调用将返回0,即ret=0,说明函数调用失败int ret=::SystemParametersInfo( SPI_GETNONCLIENTMETRICS,sizeof( NONCLIENTMETRICS ),&ncm,0);//CString str;//str.Format 阅读全文
posted @ 2012-10-23 17:34 DoubleLi 阅读(540) 评论(0) 推荐(0) 编辑

摘要:1、加载两张位图:IDB_BITMAP1, IDB_BITMAP22、添加一全按钮,IDC_BUTTON1, 属性->样式:选上"所有者绘制"和"位图"。3、在对话框类中添加成员变量,类型为CBitmapButton ,变量名为m_BitmapBtn,全局变量或局部变量均可。4、在对话框类的DoDataExchange函数中添加代码,DDX_Control( pDX, IDC_BUTTON1, m_BitmapBtn );5、在对话框类的初始化函数中添加代码,m_BitmapBtn.LoadBitmaps(IDB_BITMAP1,IDB_BITMA 阅读全文
posted @ 2012-10-23 16:35 DoubleLi 阅读(715) 评论(0) 推荐(0) 编辑

摘要:1、添加背景图片到“Bitmap”资源里。方法为“插入——资源”,如果还没有Bitmap,则新建一个Bitmap,否则选择资源类型为“Bitmap”后“引入”想要插入的背景图片,我加入的背景图片如图1,加入过程如图2。图1图2说明:引入的图片可以插入256色、16位色或更高色的图片,若是其他格式图片可用PS打开再另存为BMP、24位windows格式就可以了。提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以了,没有影响的。 2、定位到void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码: else { //CDi. 阅读全文
posted @ 2012-10-23 16:34 DoubleLi 阅读(8130) 评论(0) 推荐(0) 编辑

摘要:1、创建Application object对象theApp 程序一开始生产一个(且只有一个)Application object对象theApp,也即一个CWinApp对象,这个全局对象一产生,便执行其构造函数,因为并没有定义CMyWinApp构造函数,所以即执行CWinApp类的构造函数。该函数定义于APPCORE.CPP第75行,你可以自己搜出来啃一啃,因此,CWinApp之中的成员变量将因为theApp这个全局对象的诞生而获得配置与初值。2、WinMain登场 用SDK编程序时,程序的入口点是WinMain函数,而在MFC程序里我们并没有看到WinMain函数,哦!~ 原来她是被隐藏在 阅读全文
posted @ 2012-10-23 15:36 DoubleLi 阅读(5205) 评论(0) 推荐(3) 编辑

摘要:(1)Windows坐标系统Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系。一般而言,GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。<1>逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的映射模式将逻辑坐标转换为设备坐标。<2>设备坐标系是面向物理设备的坐标系,这种坐标以像素或设备所能表示的最小长度单位为单位,X轴方向向右,Y轴方向向下。设备坐标系的原点位置(0, 0)不限定在设备显示区域的左上角。 设备坐标系分为屏幕坐标系、窗口坐标系和客户区坐标系 阅读全文
posted @ 2012-10-23 15:35 DoubleLi 阅读(2229) 评论(0) 推荐(0) 编辑

摘要:之前写过一篇博客:用 Fiddler来调试HTTP,HTTPS。 这篇文章介绍另一个好用的抓包工具wireshark,用来获取网络数据封包,包括http,TCP,UDP,等网络协议包。记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实。有了wireshark就能截获这些网络数据包,可以清晰的看到数据包中的每一个字段。更能加深我们对网络协议的理解。对我而言, wireshark 是学习网络协议最好的工具。阅读目录wireshark介绍wireshark不能做的wireshark V 阅读全文
posted @ 2012-10-19 14:16 DoubleLi 阅读(673) 评论(0) 推荐(0) 编辑

摘要:对于没有任何源代码和PDB文件的预编译程序集而言,如果没有合适的工具,调试起来并不容易。使用Red Gate的.NET Reflector可以在Visual Studio中即时反编译程序集,然后像调试有源代码的程序集一样单步跟踪它。大家需要了解.NET Reflector(在VS和VSPro版本中)是可以集成到Visual Studio中的。标准的内置对象浏览器只显示公有方法和类(见图1),而.NET Reflector的对象浏览器(见图2)可以对编译好的程序集进行更为深入的分析,可以让用户浏览内部类、方法和代码。Red Gate .NET Reflector的Visual Studio插件能 阅读全文
posted @ 2012-10-18 15:05 DoubleLi 阅读(5376) 评论(0) 推荐(0) 编辑

摘要:环境:vs2005+IE8IE8调用vs2005编写的ocx,断点无法进入。找了很长时间,仍然无法进入原因:IE8 /IE9默认是多进程工作的,所以默认情况下不能进行调试:解决方案: 关闭IE的保护模式,避免IE用多进程方式打开网页,否则调试器启动的IE进程跟网页所在的IE进程不同,就不能中断。通过修改注册表改为多进程工作的时候,启动的IE进程和加载要调试的ocx的IE进程不是一个进程,所以不能调试1. 点击【开始】->【运行】 命令:regedit.2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet 阅读全文
posted @ 2012-10-18 14:35 DoubleLi 阅读(448) 评论(0) 推荐(0) 编辑

摘要:#include "stdafx.h"#include "stdio.h"#include "string.h"class Father{public: name() {printf("father name\n");}; virtual call() {printf("father call\n");}; };class Son: public Father{public: name() {printf("Son name\n");}; virtual call() {pr 阅读全文
posted @ 2012-10-16 22:57 DoubleLi 阅读(319) 评论(0) 推荐(0) 编辑

摘要:1.Visual Assist(强烈推荐)http://www.wholetomato.com/VA从5.0一直到现在的VAX,功能越来越 强大,除了以前版本中的自动识别各种关键字,系统函数,成员变量,自动给出输入提示,自动更正大小写错误,自动标示错误等等以外,最新的版本中还在WorkSpace窗口中加入一个VA View,可 以更方便的查找工程中的文件、类和变量。2.WndTabs(强烈推荐)http://www.wndtabs.com/WndTabs主要是在编辑窗口中显示了所有已经打开的文件,在VC中能够更方便 的操作这些文件,比如修改文件属性,copy文件路径、文件名等,并且还开放源代码 阅读全文
posted @ 2012-10-11 17:48 DoubleLi 阅读(361) 评论(0) 推荐(0) 编辑

摘要:Xtrme toolkit,BCGControlBar,SkinMagic,AppFace,Skin++,Uskin++,SYGUI,LibUIDK,GuiToolkit,GardenUI等等,除了后两种一个是开源,一个是免费的外,其余的都是收费的。The Ultimate Toolboxhttp://www.codeproject.com/KB/MFC/UltimateToolbox.aspxGuiToolkit(开源,mfc扩展框架,类似Visual Studio 2003风格)http://www.beyondata.com/default.htmGardenUI(免费,界面效果挺好的, 阅读全文
posted @ 2012-10-11 17:36 DoubleLi 阅读(1641) 评论(0) 推荐(0) 编辑

摘要:路上,有朋友说到服务端异常死掉,而客户端无法感知的情况。我说可以用KEEPLIVE去增加检测,刚好,网上有一文章写得很详细。 <以下是转>http://space.itpub.net/25259598/viewspace-684112在一个正常的TCP连接上,当我们用无限等待的方式调用下面的Recv或Send的时候: ret=recv(s,&buf[idx],nLeft,flags); 或 ret=send(s,&buf[idx],nLeft,flags); 如果TCP连接被对方正常关闭,也就是说,对方是正确地调用了closesocket(s)或者shutdown( 阅读全文
posted @ 2012-10-11 17:26 DoubleLi 阅读(1286) 评论(0) 推荐(0) 编辑

摘要:最近由于项目的需要学习了一下DirectUI方面的东西,主要借鉴的是一个国外程序员写的代码(见引用一),看了后发现它更多的是探讨一种实现的可能性和思路,和实际应用还是有距离的,不过其实现还是很有意思的。在写此小结的时候又发现国内一个程序员将这个代码部分移植到WINCE下的代码(见引用二),因为平台的差异性要完全开发一个WINCE下的实际代码还是需要时间的。由于本人GUI开发做得少,工作中有关这方面的东西主要是提供思路和方法,学习DirectUI的主要目的是为了更新知识学习思路,文章中难免出现错误。一、核心1 、CWindowWnd:窗口对象类(窗口实例对象父类)2 、CDialogBuilde 阅读全文
posted @ 2012-10-11 17:25 DoubleLi 阅读(4585) 评论(0) 推荐(0) 编辑

摘要:在C++中,指针的类型转换是经常发生的事情,比如将派生类指针转换为基类指针,将基类指针转换为派生类指针。指针的本质其实就是一个整数,用以记录进程虚拟内存空间中的地址编号,而指针的类型决定了编译器对其指向的内存空间的解释方式。基于上面的理解,我们似乎可以得出一个结论,C++中对指针进行类型转换,不会改变指针的值,只会改变指针的类型(即改变编译器对该指针指向内存的解释方式),但是这个结论在C++多重继承下是 不成立的。看下面一段代码: 1 #include <iostream> 2 using namespace std; 3 4 class CBaseA 5 { 6 public: 阅读全文
posted @ 2012-10-08 16:15 DoubleLi 阅读(506) 评论(1) 推荐(2) 编辑

点击右上角即可分享
微信分享提示