⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resourcece.cpp

📁 Windows Mobile平台上使用GDI+。GDI+功能很强大
💻 CPP
字号:
#include "stdafx.h"
#include "resourceCE.h"


typedef BOOL (*EnumResCallBack) (HMODULE hModule, LPTSTR lpszType, LONG_PTR lParam );

#if 0
LONG WINAPI LdrFindResourceDirectory_U( HMODULE hmod, const LDR_RESOURCE_INFO *info,
									   ULONG level, const IMAGE_RESOURCE_DIRECTORY **dir )
{
	const void *res;
	NTSTATUS status;

	__try
	{
		status = find_entry( hmod, info, level, &res, TRUE );
		if (status == STATUS_SUCCESS) *dir = res;
	}
	__except(1)
	{
		return GetExceptionCode();
	}

	return status;
}


BOOL WINAPI EnumResourceTypesW( HMODULE hmod, ENUMRESTYPEPROCW lpfun, LONG_PTR lparam )
{
    int i, len = 0;
    BOOL ret = FALSE;
    LPWSTR type = NULL;
    NTSTATUS status;
    const IMAGE_RESOURCE_DIRECTORY *resdir;
    const IMAGE_RESOURCE_DIRECTORY_ENTRY *et;
    const IMAGE_RESOURCE_DIR_STRING_U *str;
	EnumResCallBack lpCallBack = (EnumResCallBack)lpfun;

    //TRACE( "%p %p %lx\n", hmod, lpfun, lparam );

    if (hmod == NULL) 
		hmod = GetModuleHandle( NULL );

    if ((status = LdrFindResourceDirectory_U( hmod, NULL, 0, &resdir )) != STATUS_SUCCESS)
    {
        //SetLastError( RtlNtStatusToDosError(status) );
        return FALSE;
    }
    et = (const IMAGE_RESOURCE_DIRECTORY_ENTRY *)(resdir + 1);
    for (i = 0; i < resdir->NumberOfNamedEntries + resdir->NumberOfIdEntries; i++)
    {
        if (et[i].NameIsString)
        {
            str = (const IMAGE_RESOURCE_DIR_STRING_U *)((const BYTE *)resdir + et[i].NameOffset);
            if (str->Length + 1 > len)
            {
                len = str->Length + 1;
                HeapFree( GetProcessHeap(), 0, type );
                if (!(type = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return FALSE;
            }
            memcpy(type, str->NameString, str->Length * sizeof (WCHAR));
            type[str->Length] = 0;
            ret = lpCallBack(hmod,type,lparam);
        }
        else
        {
			ret = lpCallBack( hmod, (LPTSTR)et[i].Id, lparam );
        }
        if (!ret) break;
    }
    HeapFree( GetProcessHeap(), 0, type );
    return ret;
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -