当前位置: 代码迷 >> 汇编语言 >> 请问通过资源名加载资源
  详细解决方案

请问通过资源名加载资源

热度:210   发布时间:2016-05-02 04:45:46.0
请教通过资源名加载资源

如何才能通过资源名加载资源呢?通过资源ID的我会,但是通过资源名的却不能正常工作。在此请教大家,望赐教!
如下源码编译后在OD中运行DialogBoxParam函数返回值为-1,程序直接结束.
汇编源码:
	.386
.model flat, stdcall
option casemap : none

include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include gdi32.inc
includelib gdi32.lib

.data
hInstance dd ?
hBmp1 dd ?
hBmp2 dd ?
.const
szDialogName db 'IDD_DIALOG1', 0
.code
_ProcDlg proc uses ebx esi edi hWnd, uMsg, wParam, lParam
.if uMsg == WM_CLOSE
invoke EndDialog, hWnd, 0
invoke DeleteObject, hBmp1
invoke DeleteObject, hBmp2
.elseif uMsg == WM_INITDIALOG
invoke LoadIcon, hInstance, 101
invoke SendMessage, hWnd, WM_SETICON, ICON_BIG, eax
.else
mov eax, FALSE
ret
.endif
mov eax, TRUE
ret
_ProcDlg endp

start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke DialogBoxParam, hInstance, addr szDialogName, NULL, addr _ProcDlg, 0
invoke ExitProcess, 0
end start

RC文件:
#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include "resource.h"




//
// Dialog resources
//
LANGUAGE 0, SUBLANG_NEUTRAL
IDD_DIALOG1 DIALOG 0, 0, 186, 95
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Ms Shell Dlg"
{
    DEFPUSHBUTTON   "OK", IDOK, 129, 7, 50, 14
    PUSHBUTTON      "Cancel", IDCANCEL, 129, 24, 50, 14
}



//
// Icon resources
//
LANGUAGE 0, SUBLANG_NEUTRAL

------解决方案--------------------
rc里用#define语句之后,那标号不就成数值而非字符串了,再用字符串去加载对话框,当然找不到了。
  相关解决方案