首页
社区
课程
招聘
[旧帖] 如何调用对话框资源 0.00雪花
发表于: 2011-12-19 15:11 1372

[旧帖] 如何调用对话框资源 0.00雪花

2011-12-19 15:11
1372
我用资源 工具创建了下列对话框资源
30721 DIALOG 9, 26, 183, 70
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "新建"
LANGUAGE LANG_CHINESE, 0x2
FONT 8, "MS Shell Dlg"
{
   CONTROL "新建(&N)", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE, 6, 5, 123, 8
   CONTROL "", 100, LISTBOX, LBS_NOTIFY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 15, 125, 49
   CONTROL "确定", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 137, 6, 40, 14
   CONTROL "取消", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 137, 23, 40, 14
   CONTROL "帮助(&H)", -7866, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 137, 43, 40, 14
}

想用DialogBoxParamA API调用,程序如下:

006BFD5D   .  6A 00               PUSH 0                                   ; /lParam = NULL
006BFD5F   .  68 50FE6B00         PUSH T2011_12.006BFE50                   ; |DlgProc = T2011_12.006BFE50
006BFD64   .  6A 00               PUSH 0                                   ; |hOwner = NULL
006BFD66   .  90                  NOP                                      ; |
006BFD67   .  90                  NOP                                      ; |
006BFD68   .  90                  NOP                                      ; |
006BFD69      68 02780000         PUSH 7801                    ;资源 ID=7801  (30721)
006BFD6E   .  6A 00               PUSH 0                                   ; |hInst = NULL
006BFD70   .  E8 CFB36777         CALL USER32.DialogBoxParamA              ; \DialogBoxParamA

不知道为什么调用不成功,无法弹出对话框,是不是消息处理程序还没有编写的问题导致调用不成功,还是DialogBoxParamA API 格式错误。或是其它问题,请各位多指教!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 121
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
006BFD69      68 02780000         PUSH 7801                    ;资源 ID=7801  (30721)
这里错了,传入的是资源的名字,
如果要用资源ID,那么要调用 MAKEINTRESOURCE( ID)
,获取资源名字,在传入DialogBoxParam
2011-12-19 19:38
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这样,好,谢谢!
我试试!
2011-12-20 09:33
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
4
BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	HDROP hDrop;
	HICON  hIcon;
    switch(uMsg)
    {
        case WM_INITDIALOG:
            hIcon = LoadIcon(hInst,(LPCTSTR)IDI_ICON);
            SendMessage(hWnd,WM_SETICON,TRUE,(WPARAM)hIcon);
			DragAcceptFiles(hWnd,TRUE);
			break;
        case WM_CLOSE:
            EndDialog(hWnd, 0);
            break;
        case WM_COMMAND:
			ButtonProc(hWnd,wParam,lParam);
			break;
		case WM_DROPFILES:
			hDrop = ( HDROP )wParam;
			UINT nFile = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
			for(int i=0;i<nFile;i++)
			{
			    DragQueryFile(hDrop,i, wcPath, sizeof(wcPath)); 
			    SetDlgItemText(hWnd,IDPATH,wcPath);
			}
			DragFinish(hDrop);
			break;
    }
    return FALSE;
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    hInst=hInstance;
    return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, DialogProc);
}
2011-12-20 09:34
0
游客
登录 | 注册 方可回帖
返回
//