
C++相关
Bilter
这个作者很懒,什么都没留下…
展开
-
VC6.0到VS2008迁移排错
<br />首先可以直接用Visual Studio 2008的打开VC6的工作区文件和项目文件(dsw和dsp),并将其升级为VS2008的解决方案格式和项目格式(sln和vcproj),VC9的编译器相对于VC6有了很大的变化,一些编译参数和链接参数被废弃(比如/map:line),有一些改变了名称,还有新增的选项,不过不用担心,升级过程会自动对其进行转换,最终都会得到一个正确的解决方案和VC项目文件,这个过程不会遇到太多的麻烦,问题都出在随后的编译过程中,下面就将我在移植的过程中遇到的问题和我的解决方转载 2010-07-07 14:40:00 · 3793 阅读 · 0 评论 -
VC线程间通讯
<br /><br />1.使用全局变量<br /> 实现线程间通信的方法有很多,常用的主要是通过全局变量、自定义消息和事件对象等来实现的。其中又以对全局变量的使用最为简洁。该方法将全局变量作为线程监视的对象,并通过在主线程对此变量值的改变而实现对子线程的控制。<br /> 由于这里的全局变量需要在使用它的线程之外对其值进行改变,这就需要通过volatile关键字对此变量进行说明。使用全局变量进行线程通信的方法非常简单,通过下面给出的示例代码能够对其有一个基本的认识。<br />转载 2010-08-24 10:39:00 · 1309 阅读 · 0 评论 -
MFC的消息机制详解
<br /> <br /> <br /> <br /> <br /><br /> <br /> <br /> <br />原创 2010-08-25 15:37:00 · 787 阅读 · 0 评论 -
OWNER DRAW / CUSTUM DRAW
<br />是的,我们在复杂控件上花了些曲折.其实不应该按照 "简单/复杂" 来对控件分类,而是应该按微软定的 "OWNER DRAW / CUSTUM DRAW" 来分类. 这两种DRAW方式的具体解释可以在MSDN上找到. 对于OWNER DRAW,就是按照上文描述的方法, 对于CUSTOM DRAW, 比如我遇到的TrackBar, 处理方法是: <br />(1) 从resource.h里获得该控件的resource id, 记为nResID <br />(2) 控件窗体句柄 hItemWnd =原创 2010-09-02 14:56:00 · 1215 阅读 · 0 评论 -
孙鑫VC++视频学习笔记之5: VC菜单相关编程
<br /> 阅读本文前,我们假设您已经:<br /> 1,知道如何创建一个单文档的App Wizard<br /> 2,知道C++ 类、函数重载等简单知识<br /> 3,知道如何给View类或者Doc文档添加成员变量<br /> 4,会用MFC的IDE调试工具最好,那么本文的程序您可以copy去调试<br /> 5,知道如何为某个框架类添加虚函数或消息处理函数<br /><br /> 一、 消息的分类:<br /><br /> 消息的分类:标准消息,命令消息,通告消息。<br转载 2010-09-25 17:36:00 · 1541 阅读 · 0 评论 -
判断当前WM系统是否是Smartphone
<br /> 从微软提供的WM开发例子程序中找到的,除了取到是否是Smartphone的信息外,SystemParametersInfo还有很多其他不错的用途<br /> Code<br /> BOOL IsSmartphone()<br /> {<br /> HRESULT hr;<br /> TCHAR szPlatform[MAX_PLATFORM] = { 0 };<br /> BOOL bResult = FALSE;<br /> CBR(SystemParametersInfo(转载 2010-10-13 10:27:00 · 910 阅读 · 0 评论 -
DLL编写教程
<br /><br />DLL编写教程<br />半年不能上网,最近网络终于通了,终于可以更新博客了,写点什么呢?决定最近写一个编程技术系列,其内容是一些通用的编程技术。例如DLL,COM,Socket,多线程等等。这些技术的特点就是使用广泛,但是误解很多;网上教程很多,但是几乎没有什么优质良品。我以近几个月来的编程经验发现,很有必要好好的总结一下这些编程技术了。一来对自己是总结提高,二来可以方便光顾我博客的朋友。<br />好了,废话少说,言归正传。第一篇就是《DLL编写教程》,为什么起这么土的名字呢?为转载 2010-10-13 17:19:00 · 675 阅读 · 0 评论 -
Invalidate和UpdateWindow的区别
<br />在编程的时候经常把UpdateData、Invalidate、InvalidateRect和UpdateWindow四个函数混淆,在这里将简单介绍它们的区别。<br />UpdateData():<br /> 当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE),将控件的输入映射到转载 2011-01-10 15:45:00 · 1062 阅读 · 0 评论 -
LINK 2005 错误
今天遇到了 LINK 2005 错误。搜了一下,还真有学问呢。遂转载于此。没来得及看完第一篇,就用第二篇的方法了。第一篇:链接器都干了些什么?(http://www.cppblog.com/jacky2019/archive/2007/03/29/20891.html)Posted on 2007-03-29 19:10 小熊 目前项目在不停的增长,我想还是在它规模仍旧很小的时转载 2011-06-07 17:51:00 · 1003 阅读 · 0 评论 -
VC++:打开、保存文件对话框和浏览文件夹对话框
一、打开文件夹:1、CFileDialog实现CFileDialog hFileDlg(true,NULL ,NULL,OFN_FILEMUSTEXIST | OFN_READONLY | OFN_PATHMUSTEXIST,TEXT("驱动文件 (*.sys)|*.sys|所有文件(*.*)|*.*|"),NULL);if(hFileDlg.DoModal() == IDOK){m_pa转载 2011-06-16 14:40:00 · 1260 阅读 · 0 评论 -
C++ vector 排序
C++中当 vector 中的数据类型为基本类型时我们调用std::sort函数很容易实现 vector中数据成员的升序和降序排序,然而当vector中的数据类型为自定义结构体类型时,我们该怎样实现升序与降序排列呢?有两种方法,下面的例子能很好的说明: 方法1:我们直接来看代码吧,比较简单,容易理解:#include "stdafx.h"#include #include转载 2011-06-21 20:41:00 · 1180 阅读 · 0 评论 -
从窗口句柄得到菜单句柄(从HWND得到HMENU)
1. 如果HWND是主窗口,可以使用API: GetMenu(...) 得到属于主窗口的句柄,原型如下:HMENU GetMenu(HWND hWnd);在MFC中原型如下:CMenu* GetMenu( ) const;2. 如果HWND就是菜单的窗口,想直接转换成菜单句柄,则需要发消息了:消息ID: MN_GETHMENU 0x01E5头文转载 2010-09-25 17:37:00 · 20302 阅读 · 5 评论 -
另开了一个线程,线程里面一个函数调用UpdateData(false),结果就出错,为什么?
MFC是在类层次上的线程安全而不是在对象层次上的线程安全. 如果把一个CWnd *P传递到另外一个线程,在这个线程中CWnd的有些成员 函数将不能使用,因为在MFC内部维护一个HWND和MFC对象间的映射,但这个映射 不能跨线程,所以在一个线程中把一个CWnd *P传递到另外一个线程,另外一个 线程只有CWnd *而没有相应的HWND的这个映射,所以出现ASSERT错误. 解决方案: 1、你可以向主线程发送自定义消息,然后在这个自定义消息中调用UpdateData,就可以解决问题。或者使用其他方原创 2010-08-05 18:02:00 · 5788 阅读 · 1 评论 -
Visual C++模态对话框消息处理机制的分析
<br />摘要:消息驱动机制是Windows操作系统的根本,模态对话框消息处理又是不同于一般消息处理的特殊形式。通过分析这种消息机制的原理,可用来处理类似的程序设计要求。<br /><br /> 在Windows操作系统中,面向用户的GUI基本上可分为对话框形式和文档/视图两种表现形式。对话框的显示方式又可分为模态对话框和非模态对话框,以适应不同的用户交互需求。由于对话框和文档/视图框架结构各有特色,能不能将文档/视图框架结构当作一对话框来使用,或在对话框中实现文档/视图框架结构内的特色功能呢,答案是肯转载 2010-08-05 00:09:00 · 934 阅读 · 0 评论 -
VC工程中的.rc文件和.rc2文件的区别
<br />rc和rc2都是资源文件,包含了应用程序中用到的所有的资源。<br />两者不同在于:rc文件中的资源可以直接在VC集成环境中以可视化的方法进行编辑和修改;<br />而rc2中的资源不能在VC的集成环境下直接进行编辑和修改, 而是由根据需要手工地进行编辑。<br /> <br />在下面的地址找到关于RC2文件的描述: <br />http://msdn.microsoft.com/zh-cn/library/y3sk7e6b(VS.80).aspx <br /><br /><br />RC2原创 2010-07-07 15:00:00 · 19504 阅读 · 3 评论 -
关于using namesapce std
很多C++初学者都会碰到这样的问题,在需要进行输入输出时,需要使用using namespace std;却在编译时提示为定义的变量std。主要解释有几下几点:一 :和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。原创 2010-07-06 11:44:00 · 2111 阅读 · 0 评论 -
VC在一个工程中实现多语言版本(转)
VC在一个工程中实现多语言版本作者:朱勤武下载源代码 前段时间笔者因为做一个程序,客户要求要有中英文版本,开始以为要做二个工程,只是资源文件不同,但是发现这样一个工程更新另外一个也要更新,实在是很麻烦 ,后来经过网上查找资料与自己亲身实验,发现其实只要在一个工程中就可以实现。但是这个工程中要有两个资源文件,当编译不同版本时,程序可以自动链接不同资源文件 。下面把具体的方法写出来。供大家参考一下。第一步、创建中英文版本资源文件 我们先创建第一个中文版本工程,假设工程名称为 Example,在向导第一步的“转载 2010-07-07 11:49:00 · 1273 阅读 · 0 评论 -
怎么让你的对话框保持统一的风格
1.前言我们在做窗口程序时,难免有时候会软件添加一些背景颜色或者图片,来对其进行美化,如果只有一个窗口,可能这还比较好办.如果窗口很多,而且我们又想让它们的界面风格保持一致,那么我们应该怎么去做呢?或许有朋友会讲,对每个对话框窗口进行美化不就行了吗?如果要求它们的界面保持一致的话,使用相同的代码对各自的对话框进行美化,这不就能达到风格统一的效果吗?是的,的确,这样确实也能达到我们的要求,但不知道各位有没有想过,当我们的对话框足够多,就意味着我们需要将同一份代码复制足够多份到足够多的对话框程序中,如果转载 2010-07-19 11:22:00 · 2301 阅读 · 0 评论 -
非模态对话框的创建与删除
<br /><br />非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文: When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don’t call the base cl转载 2010-07-20 10:54:00 · 828 阅读 · 0 评论 -
CListCtr控件的一些操作
<br /> 一、获取CListCtr控件当前所选择的元素POSITION pos = m_List.GetFirstSelectedItemPosition();if (pos == NULL){TRACE(_T("No items were selected!/n"));}else{while (pos){int nItem = m_List.GetNextSelectedItem(pos);TRACE(_T("Item %d was selected!/n"), nItem);}}<br /> <br原创 2010-07-20 21:02:00 · 909 阅读 · 0 评论 -
模拟键盘按键 自动输入文字
<br /><br />模拟键盘按键 自动输入文字<br /> 键盘对于每个操作电脑的人员来说是最熟悉不过的了。键盘上的按键可分为两类 按下后会在电脑的输入窗口上出现对应字符的按键,如字母键和数字键等,我们称之为字符键;按下后虽然看不到字符但会产生控制作用的按键,如回车键、光标键等,我们称之为控制键。<br /> 对于程序员来说,键盘上的每个按键都一样,无非是不同按键产生的键盘扫描码不同。在不同的操作系统下,键盘扫描码常常被转换为不同的编码以方便应用程序调用,比如在DOS系统下的ASCII码,在Wind转载 2010-07-26 21:33:00 · 7425 阅读 · 0 评论 -
MFC CListCtrl的用法.Style/插入、删除、选中数据及排序问题等
<br />MFC CListCtrl的用法.Style/插入、删除、选中数据及排序问题等2010-02-05 19:04<br />摘抄自:http://hi.baidu.com/fclshark/blog/item/650cbaa731b7619fd14358dc.html<br />功能强大的CListCtrl:做网络笔记,还需添加修改CListCtrl改变行的颜色,列的颜色,字体颜色等.<br />资源属性里面有个sort设置排序的,如果不小心选了Ascending,那么你insertItem的顺序转载 2010-07-29 11:25:00 · 10521 阅读 · 4 评论 -
报表式CListCtrl的使用详解初稿
严格说来本文是别人成果的集合,加入了本人使用的一点心得,而且文章内容是本人在实际开发中试验过可以使用的。这只是初稿,还有很多内容没有加入,原因是没有经过验证,以后会陆续加入,形成一个CListCtrl的使用完全指南。创建图形列表并和CListCtrl关联: m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192)); m_image_list.SetBkColor( GetSysColor( COLOR_WINDOW ) ); m_caller_l转载 2010-07-28 19:29:00 · 882 阅读 · 0 评论 -
CListCtrl 一些使用技巧(更新中....)
1、问:CListCtrl 用DeleteItem删除中间项后,后面的项没有往上推,怎么解决?答:可以在之后调用Arrange, CListCtrl::Arrange( UINT nCode ) 。示例:// Align all of the list view control items along the top// of the window (the list view control must be in icon or// small icon mode).m_myListCtrl.Arrang原创 2010-07-28 21:28:00 · 2339 阅读 · 0 评论 -
关于“模态对话框”和“非模态对话框”的区别
关于“模态对话框”和“非模态对话框”的区别 先说说两者的定义:模态对话框就是指那种“显示出来就不可以点选位于其下面的对话框”的对话框;反之的就是非模态对话框。两者的区别:一. 非模态对话框的模板必须具有Visible风格(Visible=True),否则对话框将不可见,而模态对话框则无需设置该项风格。在实际编程中更加保险的办法是调用CWnd::ShowWindow(SW_SHOW)来显示对话框,而不管对话框是否具有Visible风格。二. 非模态对话框对象是用new操作符来动态创建的,而不是以成员变量的形式转载 2010-08-04 23:15:00 · 1543 阅读 · 0 评论 -
IP地址,子网掩码、默认网关,DNS服务器是什么意思?
IP地址,子网掩码、默认网关,DNS服务器是什么意思?IP地址,子网掩码、默认网关,DNS服务器是什么意思?(一)问题解析001. 问:IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇原创 2011-11-22 10:55:54 · 111763 阅读 · 14 评论