天天看點

VC中使用 CMFCEditBrowseCtrl 步驟

VC中使用CMFCEditBrowseCtrl 可以實作在Edit控件中加入一個按鈕,提供選擇檔案或者檔案功能.

使用該類時,要注意,

1、InitInstance 中一定要先調用 CWinAppEx::GetShellManager();

2、建立控件變量,類型為 CMFCEditBrowseCtrl;

3、調用 CMFCEditBrowseCtrl::EnableFileBrowseButton或CMFCEditBrowseCtrl::EnableFolderBrowseButton 設定浏覽模式。

靜态編譯時按鈕圖示消失解決方案:

靜态連結時:

void CMFCEditBrowseCtrl::SetInternalImage()

{

if (m_ImageBrowse.GetSafeHandle() != NULL)

{

m_ImageBrowse.DeleteImageList();

}

UINT uiImageListResID = afxGlobalData.Is32BitIcons() ? IDB_AFXBARRES_BROWSE32 : IDB_AFXBARRES_BROWSE;

LPCTSTR lpszResourceName = MAKEINTRESOURCE(uiImageListResID);

ENSURE(lpszResourceName != NULL);//這兒會為空

HBITMAP hbmp = (HBITMAP) ::LoadImage(

AfxFindResourceHandle(lpszResourceName, RT_BITMAP), lpszResourceName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);

if (hbmp == NULL)

{

TRACE(_T("Can't load bitmap: %x\n"), uiImageListResID);

return;

}

BITMAP bmpObj;

::GetObject(hbmp, sizeof(BITMAP), &bmpObj);

UINT nFlags = ILC_MASK;

//.......

}

如上面紅色部分所示,靜态連結時IDB_AFXBARRES_BROWSE32 這個icon資源沒有包進來,加下面代碼即可

在xxx.rc中加

#ifndef _AFXDLL

#include "afxribbon.rc" // Ribbon and control bars

#endif

繼續閱讀