随笔分类 - MFC
摘要:解决方法: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 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"
阅读全文
摘要:关于基于CFormView的单文档应用程序,添加一个图片背景的方法之一如下:下面是利用LoadImage实现。(先在程序目录中添加背景图片back.bmp)1、在view类中添加类成员变量:(为CMainFrame类添加CBitmap类型的成员变量m_bitmap和HBITMAP类型的成员变量hBitmap)int flag;HBITMAP hbmp;CBrush m_brush;2、添加类成员函数:void loadbgbmp(CString str)void C**VIew::loadbgbmp(CString str){if(str==""){hbmp = (HBIT
阅读全文
摘要:VC MFC SDI/MDI框架各部分指针获取方式整理总结一下,希望能帮助到别人。获得CWinApp获得CMainFrame获得CChildFrame获得CDocument获得CView在CWinApp中AfxGetMainWnd()m_pMainWndAfxGetMainWnd()->MDIGetActive()AfxGetMainWnd()->GetActiveFrame()SDI:AfxGetMainWnd()->GetActiveView()->GetDocument()MDI:AfxGetMainWnd()->MDIGetActive()->Get
阅读全文
摘要:一、将字符串2011-08-1800:00:00转换为字符串2011-8-18,通过以下的函数CString DataDeleteZero(CString DATA){ CStringstrmonth,strday,stryear; intyear=0,month=0,day=0; year=atoi(DATA.Mid(0,4)); month=atoi(DATA.Mid(5,2)); day=atoi(DATA.Mid(8,2)); if(month<10)month=atoi(DATA.Mid(6,2)); if(day<10)day=atoi(DATA.Mid(9,2));
阅读全文
摘要:在MFC中可以创建多种类型的窗口程序,如对话框程序、单文档结构程序(非文档/视图结构)、单文档(文档/视图结构)以及多文档视图结构程序等。 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对话框的程序不支持视图类,有些功能实现起来会麻烦许多。此时我们可以使用CFormView作为基类来创建单文档(非文档/视图结构)和单文档(文档/视图结构)的程序。一、使用MFC向导创建程序(1)单文档(文档/视图结构)(2)不需要状态栏和工具栏(3)使用CFormView作为基类(4)使用向导创建好的程序窗口二、程序初始化设置在这个由MFC向导创建的程序窗口中有些功能或许是我们不想要的,比如视...
阅读全文

浙公网安备 33010602011771号