现在的位置:首页 > 所有关于MFC的文章
MFC将窗口中所有的控件灰掉EnableWindow……
  admin 发表于 2014-07-05 16:37  分类:技术资料  2,587 次阅读  0条评论

MFC将窗口中所有的控件灰掉EnableWindow……

HWND hwndChild=::GetWindow(m_hWnd,GW_CHILD); //列出所有控件   while(hwndChild)   { ::EnableWindow(hwndChild, FALSE); hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT); }

阅读全文Tags:

(转)fatal error LNK1104:cannot open file ‘libc.lib’
  admin 发表于 2014-07-01 16:38  分类:技术资料  1,965 次阅读  0条评论

(转)fatal error LNK1104:cannot open file ‘libc.lib’

LINK:fatal error LNK1104: cannot open file 'libc.lib' 今天,用VS2008编译我的一个MFC程度时报错: LINK : fatal error LNK1104: cannot open file 'libc.lib' 而这程序的是这样的: 1. 一个我自己封装的tinyxml的静态库; 2. 一个MFC的程序,其中会去调用前面封装好的静态库; 由于类似的状况,在以前VC 6.0里开发时也经常会碰到,所以我的做法是直接把libc.lib在Project Setting里ignore掉。 但是结果报错如下: util_RsXML.lib(XMLParser.obj...

阅读全文Tags:

CComboBox执行ON_CBN_SELCHANGE事件时提取当前选中字符串方法
  admin 发表于 2014-06-13 23:04  分类:技术资料  3,003 次阅读  0条评论

CComboBox执行ON_CBN_SELCHANGE事件时提取当前选中字符串方法

CComboBox执行ON_CBN_SELCHANGE事件时提取当前选中字符串方法 可行的代码如下: CString strCxmc; m_comboBox.GetLBText(m_comboBox.GetCurSel(),strCxmc); 如果采取m_comboBox.GetWindowText()得到的将是选择之前的字符串。

阅读全文Tags:

如何限制软件多开或者几开——限制程序运行实例数
  admin 发表于 2013-11-15 11:27  分类:技术资料  3,149 次阅读  0条评论

如何限制软件多开或者几开——限制程序运行实例数

最近写了个程序,要限制软件的多开,例如一个注册码只允许3开,如果同一台电脑上购买了2个注册码,则支持6开,用到了限制程序运行实例数的技术,在这里转了一篇文章,讲解很全面,如下: +++++++++++++++++++++++++++++++++ 方法一: 单实例应用程序              开发者还能够注意到,在Win16和Win32之间的另一种差别是,所有的Win32应用程序都是以单实例方式来运行的,甚至当该应用程序的另一个实例正在运行之中也是如此。这是因为在W...

阅读全文Tags:

mfc listbox 控件-ListBox控件的使用
  admin 发表于 2013-09-28 22:02  分类:技术资料  4,124 次阅读  0条评论

mfc listbox 控件-ListBox控件的使用

   //ListBox控件的使用   ListBox窗户用来列出一系列的文本,每条则本占一行。创建一个列表窗户可使用成员函数:   BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );   其中dwStyle将指明该窗户的风格,除了子窗户常用的风格WS_CHILD,WS_VISIBLE外,你可以针对列表控件指明专门的风格。   LBS_MULTIPLESEL 指明列表框可以同时选择多行   LBS_EXTENDEDSEL 可以路程经过过程按下Shi...

阅读全文Tags:

MFC中获取程序本身的版本号的函数
  admin 发表于 2013-07-07 00:26  分类:技术资料  4,311 次阅读  0条评论

MFC中获取程序本身的版本号的函数

要用到资源文件里设置的程序版本号,在AboutDlg中显示。 如下便是获取版本号的代码: CString CUtility::GetAppVersion() { CHAR szAppPath[MAX_PATH] = {0}; ::GetModuleFileName(NULL, szAppPath, MAX_PATH); VS_FIXEDFILEINFO *VInfo; UINT nVerInfoSize = GetFileVersionInfoSize(szAppPath, 0); char* bufVerInfo = new char[nVerInfoSize]; CString strVer = “”; if (GetFileVersionInfo(szAppPath, 0, nVerInfoSize, bufVerInfo) != 0) { if ...

阅读全文Tags:

MFC文件类CFile中关于打开文件所选用的方式介绍
  包拯 发表于 2011-12-10 16:19  分类:技术资料  3,689 次阅读  0条评论

MFC文件类CFile中关于打开文件所选用的方式介绍

CFile类是MFC文件类的基类,提供非缓冲方式的二进制磁盘输入、输出功能;并直接通过派生类来支持文本文件和内存文件。提供访问本地文件内容的功能,不支持访问网络文件的功能。 CFile类的成员变量: m_hFile:表示一个打开文件的操作系统文件句柄。通过对m_hFile 与 CFile::hFileNull的比较来判断该文件是否已经打开。 MFC文件类CFile中关于打开文件所选用的方式介绍: CFile::modeCreate:构造新文件,如果文件存在,则长度变为0 CFile::modeNoTruncate:该属性和modeCr...

阅读全文Tags: ,

如何解决MFC程序内存分配次数过多(lRequest==_crtBreakAlloc)导致进入内存分配断点问题
  包拯 发表于 2011-11-06 16:45  分类:技术资料  4,569 次阅读  3条评论

如何解决MFC程序内存分配次数过多(lRequest==_crtBreakAlloc)导致进入内存分配断点问题

在前面的一则日志里我分析了当VC6写的MFC程序如果分配内存次数达到一定程度就会进入因为下面这句而断点: /* break into debugger at specific memory allocation */ if (lRequest == _crtBreakAlloc)             _CrtDbgBreak(); 这是VC6自己的问题,原因在前面的日志里也分析了,有兴趣的朋友可以去看看(地址为 http://www.youduoshao.com/2011-08-23/20110823222.html)。 那么如何解决这个问题呢? 思路就是让程序的lRequest永远不...

阅读全文Tags:

MFC中如何屏蔽掉默认的快捷方式,例如CTRL+S
  包拯 发表于 2011-10-09 20:29  分类:技术资料  4,104 次阅读  0条评论

MFC中如何屏蔽掉默认的快捷方式,例如CTRL+S

         MFC创建单文档或者多文档工程的时候,会有默认的快捷方式,例如ctrl+s就会保存文件,ctrl+p就会打印文件,有很多时候我们的程序不需要这些默认的快捷方式,如何才能去掉呢?         这时候我们只需要在资源视图里,将Accelerator目录下的资源删除即可全部去掉默认的快捷键;如果只想去掉某个快捷方式,只要选中其中想去掉的快捷方式,按delete键即可;         当然也可以直接在这里修改默...

阅读全文Tags: ,

Debug程序死在了lRequest == _crtBreakAlloc,之调用New的次数过多
  包拯 发表于 2011-08-23 22:54  分类:技术资料  4,928 次阅读  3条评论

Debug程序死在了lRequest == _crtBreakAlloc,之调用New的次数过多

Debug版的程序运行了好久,忽然死掉了,检查尸体的时候发现死在如下代码中的最后一个if那里:         long lRequest;         size_t blockSize;         int fIgnore = FALSE;         _CrtMemBlockHeader * pHead;         /* verify heap before allocation */         if (_crtDbgFlag & _CRTDBG_CHECK_ALWAYS_DF)     &n...

阅读全文Tags: ,

MFC中设置程序开机自动运行……
  包拯 发表于 2011-08-22 18:59  分类:技术资料  6,161 次阅读  1条评论

MFC中设置程序开机自动运行……

        用MFC做了一个自动定时校时的对话框程序,需要将其设置为开机启动,通过修改注册表就可以实现,写了一个函数,在对话框的OnInitDialog中调用它既可以实现开机自动运行。具体的函数如下:   void CSClockDlg::SetAutoRun(BOOL bAutoRun) { HKEY hKey; CString strRegPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; if (bAutoRun) { if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS, &hKe...

阅读全文Tags: ,

MFC中CMonthCalCtrl中GetCurSel获取的时间是错误的……
  包拯 发表于 2011-08-20 00:46  分类:技术资料  4,350 次阅读  0条评论

MFC中CMonthCalCtrl中GetCurSel获取的时间是错误的……

    在做一个MFC的程序的时候,用到了CMonthCalCtrl控件,用以设置日期,当获取当前选择的日期时用到了GetCurSel函数,结果发现这样用获取的结果是错误的: CTime ctSel; m_mcDate.GetCurSel(ctSel);   这样得到的不是你选择的日期!!   后来发现只有用SYSTEMTIME来获取当前选择的日期时才能是正确的: SYSTEMTIME selDate; m_mcDate.GetCurSel(&selDate); 这样就能得到了正确的选中的日期,想获取其中的年月日,只要直接取其成员变量如sel...

阅读全文Tags: ,

Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~
  包拯 发表于 2011-06-02 20:23  分类:技术资料  8,845 次阅读  4条评论

Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~

1>—— 已启动生成: 项目: OSGtest, 配置: Debug Win32 —— 1>正在编译… 1>AddScene.cpp 1>main.cpp 1>c:program filesmicrosoft visual studio 8vcatlmfcincludeafx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] 1>PickHandler.cpp 1>SceneSound.cpp 1>SemSceneSerializer....

阅读全文Tags: