ht() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CBindFileDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
//枚举所有图标资源
BOOL CALLBACK my_enum_res_callback(
HMODULE hExe, // 资源句柄
LPCTSTR lpszType, // 资源类型
LPTSTR lpszName, // 资源名称
LPARAM lParam // 自定义消息参数
)
{
HRSRC hRsrc = 0;
HGLOBAL hMem;
DWORD nDataLen;
NEWHEADER* pDirHeader;
RESDIR* pResDir;
BYTE* pData;
unsigned int k;
my_enum_res_callback_data* pMyDataStruct = (my_enum_res_callback_data*)lParam;
hRsrc = FindResource(hExe, lpszName, RT_GROUP_ICON);
hMem = LoadResource(hExe, hRsrc);
pDirHeader = (NEWHEADER*)LockResource(hMem);
pResDir = (RESDIR*)(pDirHeader+1);
for (k = 0; k < pDirHeader->ResCount; k++)
{
if (pResDir[k].BytesInRes == pMyDataStruct->pcResDir->BytesInRes &&
pResDir[k].BitCount == pMyDataStruct->pcResDir->BitCount &&
pResDir[k].Planes == pMyDataStruct->pcResDir->Planes &&
memcmp(&pResDir[k].Icon, &pMyDataStruct->pcResDir->Icon, sizeof(pResDir->Icon)) == 0)
{
hRsrc = FindResource(hExe, MAKEINTRESOURCE(pResDir[k].IconCursorId), RT_ICON);
hMem = LoadResource(hExe, hRsrc );
nDataLen = SizeofResource( hExe, hRsrc );
pData =(BYTE*)LockResource(hMem);
#ifdef DEBUG_PRINT
fprintf(stderr, "\t目录%d中发现 %d-th 图标,序号(ID)=%d (大小: %d)\n",
k, lpszName, pResDir[k].IconCursorId, nDataLen);
#endif DEBUG_PRINT
pMyDataStruct->pMatchIcon = pData;
return FALSE; //
上一篇:
BindFile.cpp
下一篇:
多年来只想说一句,我不怪你