小鸵鸟 发表于 2015-8-1 09:55:58

只是想要一个对话框怎么就那么费劲呢

我只是想要一个单单的对话框,程序编译、链接(在链接的时候会出现第一个图)都没有错误提示,可就是不出来对话框,,郁闷的要死,
附图:
源代码:
#include<windows.h>
#include <resource.h>
#define        DLG_MAIN        701
BOOL        CALLBACK DialogProc (HWND, UINT, WPARAM, LPARAM);
int nResult;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
        nResult=DialogBox(hInstance,TEXT("DLG_MAIN"),NULL,DialogProc);
        ExitProcess(NULL);
return 0;
}
BOOL CALLBACK DialogProc (HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam)
{
        switch (message)
        {
                case WM_INITDIALOG:
                        return TRUE;
                case WM_CLOSE:
                        EndDialog(hDlg,nResult);
                        return TRUE;
        }
        return TRUE;
}

默默路过 发表于 2015-8-1 09:55:59

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
        nResult = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), HWND_DESKTOP, DialogProc);
       
        ExitProcess(NULL);
        return 0;
}

不知道是否是版本不一样的问题,我使用的是VS2005的 这里红色部分使用的宏 是 MAKEINTRESOURCE(对话框ID);__TEXT("")宏L##""在2005里面是转变宽字节的意思! 也许可以试试!
从本质上理解的话 这里是需要将 对话框的ID这个数值 转化为一个 字符串, 那么可以试试 TEXT(“701”)使用ID 不适用宏名,被“”括住的宏是不会被替换的! 我没有6.0 无法实验了!

小鸵鸟 发表于 2015-8-6 12:11:04

默默路过 发表于 2015-8-1 09:55
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
       ...

问题还是没有被解决,现在我比较想知道的是这个Dialog函数的第二个参数不应该既可以是一个数值型的也可以是一个字符串的吗?(百度百科里面的,而且,我在win32汇编里面学的用的都是数值型的),可是我在VC里却只许让用字符串型的,,搞不懂,

默默路过 发表于 2015-8-6 15:39:20

小鸵鸟 发表于 2015-8-6 12:11
问题还是没有被解决,现在我比较想知道的是这个Dialog函数的第二个参数不应该既可以是一个数值型的也可以 ...

额,确切的说应该是一个数值,但是这是底层语言和高级语言不一样的一个方面,在底层中 更偏向于直接了当的得到结果,快准狠,但是 高层语言是使得更多的人上手更快,语言的使用会像人类语言的理解上偏转,很多都是宏,字符串什么的,方便理解! 给你一个大堆数据 时间长了也就不知道是什么了,但是字符串的含义还可以读懂!也方便相互间的交流!建议用 高版本的 VS吧,现在 6.0的 用的 真的很少了!C89到C99到C11 语言的语法内容也有了细微的 改动!

小鸵鸟 发表于 2015-8-6 16:21:16

默默路过 发表于 2015-8-6 15:39
额,确切的说应该是一个数值,但是这是底层语言和高级语言不一样的一个方面,在底层中 更偏向于直接了当 ...

嗯,谢谢你,可是小甲鱼老师那个VS的视频还没讲到资源方面的使用,等他出那个视频再学VS吧,(如果你有空的话,录点使用VS的资源(就Dialog就好)的视频,发给我看一下(1610982938@qq.com),没空就算了)

智商是硬伤 发表于 2015-8-17 07:42:06

咱们码农有力量,嘿
{:7_146:}

y290176346 发表于 2015-9-23 21:10:49

我来领鱼币的人

jies147 发表于 2015-9-28 10:46:19

我也是之前看书才明白这个问题的。如果在资源中将对话框ID定义成字符串,如“Dialog”,就要用DialogBox(hInstance, TEXT("Dialog")HWND_DESKTOP, DialogProc)这种形式,如果将ID定义成宏,如ID_DLG,就用DialogBox(hInstance, MAKEINTRESOURCE(ID_DLG), HWND_DESKTOP, DialogProc)。注意MAKEINTRESOURCE括号内没有双引号。。

waliemiao 发表于 2015-10-8 15:04:17

前来学习:ton:
页: [1]
查看完整版本: 只是想要一个对话框怎么就那么费劲呢