编写自己的CMFCEditBrowseCtrl

在Visual Studio 2010和Visual Studio 2008 SP1中,微软采用了BCG库对应用程序界面进行美化,其中CMFCEditBrowseCtrl控件可以实现在Edit控编写自己的CMFCEditBrowseCtrl类时,可能会遇到下面的问题

在release下

1、编译会出现如下错误:

error C2065: “classCMFCEditBrowseCtrl”: 未声明的标识符

需要处理的是

Cpp文件中:

IMPLEMENT_DYNAMIC(CMyEditBrowseCtrl, CMFCEditBrowseCtrl)

改为

IMPLEMENT_DYNAMIC(CMyEditBrowseCtrl, CEdit)

2、图标会显示不正常

在使用MFC EditBrowse Control控件时,在使用动态库下,Debug/Relese版本都可以正常显示浏览文件或文件夹按钮,但如果在静态库下使用,只有在Debug版本下才会正常显示图标,Release版本下图标不显示。原因是MFC应用程序向导生成的代码的一些选项不支持MFC Feature Pack新增的类。如果你要在面向对话框的MFC程序中使用MFC Feature Pack新增的类,需要在向导中更改基类为CDialogEx或者手动编辑rc文件打开rc文件,在Edit菜单中选择resource includes,在Read only symbol directives里面加入 

下面绿色粗体字是要自己添加的 (其实是用资源视图时, "编辑"->"资源包括", 在"编译时指令"中添加, 记得不要加错地方就行了)

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\NewControls.rc2"  // non-Microsoft Visual C++ edited resources
#include "afxres.rc"         // Standard components
#ifndef _AFXDLL
#include "afxribbon.rc"      // Ribbon and control bars
#endif

#endif


微软论坛上也有这样的说法 
http://social.msdn.microsoft.com/Forums/en-US/c8c029b8-10e8-4f82-8bef-baeeb3ef8dd7/where-did-the-cmfceditbrowsectrl-icon-go?forum=vcmfcatl&prof=required

没有更多推荐了,返回首页