DoubleLi

qq: 517712484 wx: ldbgliet

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

随笔分类 -  VC/MFC

上一页 1 ··· 22 23 24 25 26 27 28 29 30 下一页

摘要: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 阅读(537) 评论(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 阅读(8113) 评论(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 阅读(2226) 评论(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) 编辑

摘要: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 阅读(1619) 评论(0) 推荐(0) 编辑

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

摘要:from:http://blog.csdn.net/byxdaz/article/details/4633826#commentsSTL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最先开发,它是与C++几乎同时开始开发的;一开始STL选择了Ada作为实现语 阅读全文
posted @ 2012-09-27 00:38 DoubleLi 阅读(520) 评论(0) 推荐(0) 编辑

摘要:from:http://blog.csdn.net/byxdaz/article/details/4496575几种网络编程方式:ISAPI、CGI、WinInet、Winsock它们之间的区别:1)ISAPI主要是开发基于浏览器客户端与服务器端程序。效率比CGI方式高,而且也扩展了CGI没有的一些功能。(基于TCP/IP模型中的应用层)2)CGI主要是开发基于浏览器客户端与服务器端程序。(基于TCP/IP模型中的应用层)3)WinInet主要是开发客户端程序。(基于TCP/IP模型中的应用层)4)Winsock主要是基于socket来开发客户端与服务器端程序。(基于TCP/IP模型中的各层) 阅读全文
posted @ 2012-09-27 00:36 DoubleLi 阅读(1115) 评论(0) 推荐(0) 编辑

摘要:from:http://blog.csdn.net/byxdaz/article/details/5638680用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法。 但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力。这时,只能考虑使用内核模式。用户模式与内核模式线程同步机制比较:用户模式内核模式优点线程同步机制速度快支持多个进程之间的线程同步防止死锁缺点容易陷入死锁状态多个进程之间的线程同步会出现问题。(比如竞争资源、死锁)线程同步机制速度慢线程必须从用户模式转为内核模式。这个转换需要很大的代价:往返一次需要占用 阅读全文
posted @ 2012-09-27 00:32 DoubleLi 阅读(4969) 评论(0) 推荐(1) 编辑

摘要:该函数用来子类化一个控件. Subclass(子类化)是MFC中最常用的窗体技术之一。子类化完成两个工作:一是把窗体类对象attach到一个windows窗体实体中(即把一个窗体的hwnd赋给该类)。另外就是把该类对象的消息加入到消息路由中,使得该类可以捕获消息。 SubclassDlgItem可以把对话框中已有的控件与某个窗口对象动态连接起来,该窗口对象将接管控件的消息处理,从而使控件具有新的特性.SubclassDlgItem函数的声明为 BOOL SubclassDlgItem( UINT nID, CWnd* pParent ); 参数nID是控件的ID,pParent是... 阅读全文
posted @ 2012-09-26 00:19 DoubleLi 阅读(415) 评论(0) 推荐(0) 编辑

摘要:一、Windows对象和MFC对象的区别?MFC对象实际上并没有把整个Windows对象都包装在其中。对于窗口:MFC对象它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口对象,也就是WNDCLASS,是一个Windows对象),那么这个MFC对象就是有效的,否则这个MFC对象是空的。如果你还不明白,请回忆一下,当我们使用MFC创建一个窗口时,是分两步进行的:第一步,new一个CWnd对象,这一步是创建MFC对象,但是其中的HWND还是非法的,因为对应的Windows对象还没有被创建出来;第二步,调用CWnd的成员函数Create创建真正的Windows对象,同时,把先 阅读全文
posted @ 2012-09-26 00:18 DoubleLi 阅读(4713) 评论(0) 推荐(1) 编辑

摘要:转自:http://www.cppblog.com/finehai/archive/2009/08/27/94578.html在MFC编程中经常会需要用到选择目录和选择文件的界面,以下总结一下本人常用的这两种对话框的生成方法: 选择目录对话框 //选择目录按钮 void CDcPackerDlg::OnBnClickedDecgen() { char szPath[MAX_PATH]; //存放选择的目录路径 CString str; ZeroMemory(szPath, sizeof(szPath)); BROWSEINFO bi; bi.hwndOwner = m_hWnd; b... 阅读全文
posted @ 2012-09-26 00:11 DoubleLi 阅读(459) 评论(0) 推荐(0) 编辑

摘要:http://hi.baidu.com/xiaorida21/blog/item/8d8eb77a22eedee52e73b39e.htmlCWnd类我们在屏幕上看到的所有对象都和窗口有关,它们或者派生于CWnd,属继承关系,如对话框、工具栏、状态栏、子控件;或者被CWnd合成,属服务员与服务对象关系,如图标、菜单、显示设备。CWnd类封装的窗口操作主要包含窗口的创建和销毁、操作窗口风格、操作窗口状态、窗口子类化、获取指定窗口等。当然,CWnd还实现了其他功能:1、绘制窗口GetDC()//取得客户区显示设备上下文GetWindowsDC()//取得整个窗口的显示设备上下文ReleaseDC( 阅读全文
posted @ 2012-09-26 00:07 DoubleLi 阅读(973) 评论(0) 推荐(0) 编辑

摘要:C++中的预处理命令一、预处理的由来: 在C++的历史发展中,有很多的语言特征(特别是语言的晦涩之处)来自于C语言,预处理就是其中的一个。C++从C语言那里把C语言预处理器继承过来(C语言预处理器,被Bjarne博士简称为Cpp,不知道是不是C Program Preprocessor的简称)。 二、常见的预处理功能: 预处理器的主要作用就是: 把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有: 文件包含,条件编译、布局控制和宏替换4种。 文件包含: #include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文。 条件编译: #if,#ifndef,#if... 阅读全文
posted @ 2012-08-27 17:23 DoubleLi 阅读(12006) 评论(0) 推荐(0) 编辑

摘要:C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。预处理器指令以#号开头标识,末尾不包含分号。预处理命令不是C/C++语言本身的组成部分,不能直接对它们进行编译和链接。C/C++语言的一个重要功能是可以使用预处理指令和具有预处理的功能。C/C++提供的预处理功能主要有文件包含、宏替换、条件编译等。 1、文件包含 预处理指令#include用于包含头文件,有两种形式:#include <xxx.h>,#include "xxx.h"。尖括号形式表示被包含的文件在系统目录中。如果被包含的文 阅读全文
posted @ 2012-08-27 17:22 DoubleLi 阅读(3739) 评论(1) 推荐(1) 编辑

摘要:一.预处理宏 1. 通用宏 VC6.0 中: Project Setting à C/C++ à Preprocessor definitions VC2005 中: 项目属性 à 配置属性 à C/C++ à 预处理器定义 WIN32 :指明是 Window 32 位系统的编译器,一般用作平台识别。 _MBCS/_UNICODE :指明该工程使用的字符集(多字节字符集 /UNICODE )。 在 VC6.0 的 “Project Setting à C/C++ à Project Options” 处将会有 /D &quo 阅读全文
posted @ 2012-08-27 17:20 DoubleLi 阅读(6645) 评论(0) 推荐(2) 编辑

摘要:VC9编译的程序在没有装过VC9(确切的说是.Net Framework3.5)的机器上运行时,如果提示“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”这个错误,那 么就说明该程序动态链接了VC9的运行时库,(如果还用到了MFC,那么可能动态链接了VC9的MFC库,同理还有ATL库),以及缺少对应的 manifest文件,程序在目标机器上没有找到这些库和配置文件,因此导致了这个错误。出现这种情况的VC9编译器可能存在3个版本,接下来分别阐明:1、没有打过任何补丁的VS2008该版本对应的CRT/MFC/ATL库的版本号为9.0.21022.8,这个版本号在后面 阅读全文
posted @ 2012-08-27 17:14 DoubleLi 阅读(616) 评论(0) 推荐(0) 编辑

上一页 1 ··· 22 23 24 25 26 27 28 29 30 下一页