分享
 
 
 

由零开始做 Dialog (SDK版) — 在 VC + MSDN 下取巧篇

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

(一般来说要做一个 Dialog 是非常简单的,所以这篇教程是写给初学者的。但是由于篇幅所限,对窗体过程或事件驱动不做介绍。)

好了,言归正传。我们就马上来做吧。

打开你的 VC6 (如果有工程的请Close Workspace),选择新建工程(Win32 Application - An empty project ,记得选好保存路径),然后在该路径里新建一个 .cpp文件(比如WinMain.cpp),最后在工程管理窗口的 "FileView" 那里,选择 Add Files to project , 把刚新建的 WinMain.cpp 加入到工程里面去。

好了,你现在已经有了一个工程文件了,如果你希望加入你自己定义的对话框,还要做一个资源文件,并包含到你的工程中来,就好像 WinMain.cpp 的那样。

在 VC6 的菜单 "Insert" – "Resource... Ctrl+R" 中,理所当然要加入一个 Dialog ,选择 "New" (不是Import)。 然后你就可以得到一个默认模板的对话框了,随便给这个新建的 Dialog 设置一些属性(双击该对话框的标题栏可以得到设置属性的对话框),比方说,那个对话框的 ID: 默认的是 IDD_DIALOG1 ,你就把它改为 "MYDIALOG" (请记住要给ID 加上双引号,默认的是没有引号的,这样做是为了可以不包含 Resource.h 的头文件);跟着你喜欢的话就改改标题吧,在 Caption: 里填入 my first Dialog 。 好了,剩下的就是保存工作了。请选择 Save All,选在你的工程的目录里保存该资源文件(我这里的名字选择 Resource.rc)。

好了,现在资源文件已经有了,剩下的就是把它加入到工程中来了,方法可以参考 WinMain.cpp 的加入,不再累叙 (在 FileView 里面加入)。

好了,以下剩下的就是编辑你的 WinMaiin.cpp 了,也是我所说的可以取巧的地方。

首先,你首先必须加入的是 这一句: #include <windows.h>。 然后另起一行,键入 winmain之后再按 F1 键。 你是不是看到 MSDN 出来了呢? 那里面就有关于 WinMain 的定义和参数可以 copy 了,好了,拿来就用吧。把刚才键入的 winmain 删掉,拿从 MSDN 里 copy 来的代替。可以成为下面的样子(还要加入 return 0;语句)。

#include <windows.h>

int WINAPI WinMain(

HINSTANCE hInstance, // handle to current instance

HINSTANCE hPrevInstance, // handle to previous instance

LPSTR lpCmdLine, // command line

int nCmdShow // show state

)

{ // 你可以插入你的代码于此

return 0;

}

好了,你试试编译一下,看看能不能够通过编译? OK 吧?取巧第一步成功了。现在函数入口总算出来了,可是你要建一个对话框的话,还需要一个对话框的 CALLBACK 过程。下面介绍小小的取巧办法。

这个过程实际上是一个函数,要在 WinMain 中使用的话就必须在 WinMain 之前定义了。那么请在 WinMain 的定义之前的位置某个空行输入 DialogProc 然后再次按下 F1 , call 出 MSDN 来。哈哈,关于 DialogProc 的定义及参数又可以抄了。代替你刚才键入的 DialogProc 吧,经过加工后就如下面的样子:

INT_PTR CALLBACK DialogProc(

HWND hwndDlg, // handle to dialog box

UINT uMsg, // message

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

)

{ // 你可以插入你的代码于此

return 0;

}

这样还不行,还得对消息进行处理,加入如下句子:

switch (uMsg)

{

case WM_COMMAND:

if (LOWORD(wParam) == IDOK) EndDialog( hwndDlg, 0 );

if (LOWORD(wParam) == IDCANCEL) EndDialog( hwndDlg, 0 );

}

剩下的就只有一件事,就是在 WinMain 里面调用 DialogBox 函数了,(详细的参数请看 MSDN)

也就是在 WinMain 里面的第一句那里写入如下句子:

DialogBox( hInstance,"MYDIALOG", NULL, (DLGPROC)DialogProc );

现在已经可以完全的编译和调用了。试试看,效果如何?是不是简单得来又显得比较专业?? 哈哈哈,其实不过满足了我自个的一点偷懒的心理而已(并非真的取巧!被骗了.....)。

详细的代码见下面,<全文完>

// WinMain.cpp 源程序

#include <windows.h>

INT_PTR CALLBACK DialogProc(

HWND hwndDlg, // handle to dialog box

UINT uMsg, // message

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

)

{

switch (uMsg)

{

case WM_COMMAND:

if (LOWORD(wParam) == IDOK) EndDialog( hwndDlg, 0 );

if (LOWORD(wParam) == IDCANCEL) EndDialog( hwndDlg, 0 );

} // End of switch (uMsg)

return 0;

}

int WINAPI WinMain(

HINSTANCE hInstance, // handle to current instance

HINSTANCE hPrevInstance, // handle to previous instance

LPSTR lpCmdLine, // command line

int nCmdShow // show state

)

{

DialogBox( NULL, "MYDIALOG", NULL, (DLGPROC) DialogProc);

return 0;

}

// End of source file

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有