DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  C++/C

上一页 1 ··· 39 40 41 42 43 44 45 46 47 下一页

摘要:若要确定必须与应用程序一起重新发布的 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 阅读(339) 评论(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 阅读(817) 评论(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 阅读(542) 评论(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 阅读(3262) 评论(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 阅读(1330) 评论(0) 推荐(1) 编辑

摘要:一、简单对话框全屏显示方法在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 阅读(4730) 评论(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 阅读(4401) 评论(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 阅读(535) 评论(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 阅读(709) 评论(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 阅读(8107) 评论(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 阅读(5201) 评论(0) 推荐(3) 编辑

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

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

摘要:通俗解释就像上厕所: 门锁了,就等着,等到别人出来了,进去锁上,然后该干什么干什么,干完了,把门打开 门没锁,就进去,锁上,然后该干什么干什么,干完了,把门打开 -------------------------------------------------- 多线程中用来确保同一时刻只有一个线程操作被保护的数据 InitializeCriticalSection(&cs);//初始化临界区 EnterCriticalSection(&cs);//进入临界区 //操作数据 MyMoney*=10;//所有访问MyMoney变量的程序都需要这样写Enter.. Leave... 阅读全文
posted @ 2012-09-27 15:32 DoubleLi 阅读(321) 评论(0) 推荐(0) 编辑

上一页 1 ··· 39 40 41 42 43 44 45 46 47 下一页