随笔分类 - VS2010
摘要:解决方法:1. 按F5调试程序 2. 在出错时,选择“重试” 3. 按ALT+7调出“调用栈”窗口 4. 双击从上往下的最近一个自己定义的函数,系统会自动把该函数所在的文件显示出来,此时程序就暂停在光标处。一般来说错误就出在这附近。可以通过查看变量的值来确认。找到问题:原来是重写的DeleteContents()里出了问题:for(POSITION pos=GetFirstViewPosition();pos!=NULL;) { CView* pView = GetNextView(pos); if (pView->IsKindOf(RUNTIME_CLASS(CMessageVie..
阅读全文
摘要:分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图。MFC分割窗口的方式有两种,动态分割和静态分割。动态分割窗口通常用于创建同一个文档对应的多个视图,而且这些视图一般都是同一类型的视图,能够在用户编辑文档的不同部分时提供方便。大家看下Word里的动态分割窗口就很明白了,以Word2007文档为例,在菜单中点击“视图”->“拆分”,就可以看到一条随鼠标移动的分隔条,当我们在文档中某个位置按下鼠标左键时,分割条就固定了下来,生成了上下两个分割窗格,通过滚动每个窗格中的垂直滚动条可以看到,两个窗格中的内容相同,这
阅读全文
摘要:1. MFC中 创建文件夹的方法如下:CString strFolderPath = "./Output"; //判断路径是否存在 if(!PathIsDirectory(strFolderPath)) { CString strMsg; strMsg.Format(_T("指定路径\"%s\"不存在,是否创建?"),strFolderPath); if(AfxMessageBox(strMsg,MB_YESNO) == IDYES) ...
阅读全文
摘要:用VS2010打开vc6.0的工程时,遇到了很多的问题,下面记录下解决办法。1. 报错: error C2065: “i”: 未声明的标识符解决办法: 提出 i 的申明,因为 i 的申明可能在for循环里。2. 报错: error C2440 “static_cast” 无法从“void (__thiscall CMainFrame::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”解决办法: 例如:TransparentWnd.cpp中ON_MESSAGE(WM_LIBEN,OnLiben): 第一:把原来...
阅读全文
摘要:问题:VS2010 c++编写的程序在别人的机子运行不了,缺少mfc100u.dll xxx100d.dll等解决方法:1.将这些dll打包,和应用程序一起发布;2.采用MFC静态编译; 静态编译:就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。VS2010中静态编译设置方法 使用VS2010编译的程序在windows xp中运行时 经常会出现找不到相关的DLL文件,我们可以使用静态编译的方法把这些运行依赖文件打包到*.exe中来,以减少对环境的依赖。一般可以配置一下两项:第..
阅读全文
摘要:MFC里的DateTimePicker控件 ,通过属性来设置的话只能设置两种显示方式,要么日期,要么时间,很多时候我们需要在一个DateTimePicker里日期和时间同时显示。这个时候只能通过自定义显示格式来完成,使用方法如下:CDateTimeCtrl m_dateTimeCtrl;DateTime_SetFormat(m_dateTime.GetSafeHwnd(),"''yyyy'-'MM'-'dd' 'HH':'m':'s''");'yyyy
阅读全文
摘要:基于VS2010 MFC的项目是之前建好的,后来需要添加数据库。方法分享于此。1. 打开自己的项目,项目->添加类。2. 选MFC ODBC使用者,点右下角的添加。3. 点数据源。//动态集:当修改数据库数据后将被同步到数据库//快照:即静态的,非同步的4. 点新建。//文件数据源把信息保存到一个文件中,这个文件可以复制到你的程序中.//而机器数据源是把信息保存到注册表中,没有文件可复制,你换个机器就没这个数据源了.5. 根据自己数据库的类型来选择,然后下一步。(我的文件是.accdb的,所以这里访问access数据库。)6. 点浏览,选择自己的数据库文件,然后下一步->完成。(建
阅读全文
摘要:list 控件是creat的,不是拖在对话框上的。想使用CListCtrl的排序功能却犯了愁~~~ 还好找到方法,如下:.h文件里:afx_msg void OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult);.cpp文件里:消息映射如下:ON_NOTIFY(LVN_COLUMNCLICK,IDS_RECRODSWND, &CViewList::OnLvnColumnclickList1)具体实现:// 排序用的比较函数static int CALLBACK MyCompareProc(LPARAM lParam1, LPARA
阅读全文
摘要:今天换了一个ico图标,本来源图像是bmp的,让我改了后缀名成ico。 然后编译就报错了:error : bitmap file Res\tankBattle.ico is not in 3.00 format 解决办法:用格式工厂一转换,就OK了~~~
阅读全文
摘要:1. 在工具箱中找到Date Time Picker控件,然后拖放到对话框上。2. 在其属性中按自己的需求做一些设置。 Format 属性:LongDate (长日期):****年**月**日 Short Date(短日期):2013/10/26(或 2013-10-26) Show None 属性:用于将日期值设为空。 Use Spin Control 属性:提供一个调整时间的按钮,一个上(增加),一个下(减少)。 Allow Edit 属性:可以编辑整行。 ……3. 利用类向导给控件添加变量:CString m_date。 用 UpdateDate(True)...
阅读全文
摘要:久了没用,居然忘记了该怎样给菜单项添加响应函数了~~~~~~~~T_T 特记于此: 1. 在资源视图的Menu里找到自己要添加的菜单,然后输入菜单项。 2. 右击菜单项选属性,设置Popup为False,修改ID。 3. 在CXXXView类里利用类向导找到刚刚改的ID,双击即可添加消息响应函数。 此时就会发现多了例如这样的代码: .h文件里: 消息响应函数的声明:afx_msg void OnCountM(); .cpp文件里: 新的消息映射:ON_COMMA...
阅读全文
摘要:一、Debug和Release编译方式的本质区别 Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug和Release的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd/Fo,但区别并不重要,通常他们也不会引起Release版错误,在此不讨论)。 Debug版本: /MDd/MLd或/MTd使用Debugruntimelibrary(调试版本的运行时刻函数库) /Od关闭优化开关 ...
阅读全文
摘要:经过苦苦调试,今晚终于解决了一个大问题。我想要实现的是:在一个FormView的派生类里获取到文档类的指针。但是出现问题:试了很多办法,始终无法获取到。终于,此问题在我不懈地调试加尝试下解决了。现把我解决方法共享之,希望帮到遇到同样问题的人,因为这个问题实在是太让我恼火了!!!首先头文件:#include "MainFrm.h"#include "XXXDoc.h"#include "XXXView.h"然后在需要获得文档类指针的地方使用如下方法:static CMainFrame* pMain = (CMainFrame *)Afx
阅读全文
摘要:在单文档视图(SDI)结构中,视图一般用来显示数据。但是,有时也希望在视图中显示按钮或其他的控件,以满足用户的需要。下面是手动添加按钮并使按钮具有响应事件的功能的方法。第一步:添加一个按钮首先在**View.h中定义一个按钮标识#define ID_BUTTON 100其次给C**View类添加一个成员变量CButton m_myButton; //这条语句写在**View.h的类的定义中,要声明为PUBLIC类型然后创建按钮实例 m_myButton.Create(_T("示例按钮"), //按钮的caption属性,按钮的显示WS_CHILD|WS_VISIBLE|BS
阅读全文
摘要:VS2010 MFC中制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图)1. 在资源窗口里新建一个FormView的Dialog,修改ID为IDD_FORMVIEW。在此Dialog上点击右键添加类,建立一个基类为CFormView的类,这里取名为CMfcFormView。则生成了MfcFormView.h和MfcFormView.cpp文件。2. 建立一个CDockablePane的派生类,予以容纳FormView,建立派生出的CDockablePane类为CSolutionWnd 即利用类向导,添加类名为CSolutionWnd,.
阅读全文
摘要:在上一篇中记录了用fprintf函数写内容到文件中的方法,但是发现了问题:产生的文件字符串有乱码现象。解决办法:用_ftprintf函数另外,据说: unicode的话要用fwprintf unicode 和ANSI两个版本都可用的有宏_ftprintf但是如下代码中出来的是“???”:CString str = "紫清婷";_ftprintf(fp, _T("%s\n"), str);试了半天,发现字母和数字都正确写入文件,但是汉字写到文件就要变成"?"。最后改为:_ftprintf(fp, _T("%hs\n"
阅读全文
摘要:#include #define F_PATH "d:\myfile\file.txt" int main(void) { FILE *fp = NULL; //需要注意 fp = fopen(F_PATH, "a"); if(NULL == fp) { return -1; //返回错误代码 } CString a = "a"; CString b = "...
阅读全文
摘要:在MFC中可以创建多种类型的窗口程序,如对话框程序、单文档结构程序(非文档/视图结构)、单文档(文档/视图结构)以及多文档视图结构程序等。 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对话框的程序不支持视图类,有些功能实现起来会麻烦许多。此时我们可以使用CFormView作为基类来创建单文档(非文档/视图结构)和单文档(文档/视图结构)的程序。一、使用MFC向导创建程序(1)单文档(文档/视图结构)(2)不需要状态栏和工具栏(3)使用CFormView作为基类(4)使用向导创建好的程序窗口二、程序初始化设置在这个由MFC向导创建的程序窗口中有些功能或许是我们不想要的,比如视...
阅读全文
摘要:VS2012中对C#的支持度非常好,不管是编写方便程度(不需要插件就能高亮代码及代码自动提示功能),还对MFC的一些功能优化很多。修改两个工程文件就把VS2012的项目移植到VS2010中去的方法如下:1. 修改解决方案文件(.sln文件)。 使用记事本打开,把里面的 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 改成 Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 201..
阅读全文

浙公网安备 33010602011771号