win32开发(对话框启动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    有过mfc开发经验的朋友都知道,在mfc下面有三种app开发的方式,它分别是mdi开发、sdi开发和dialog based开发。尤其是最后一种,这种基于对话框的开发方法常常用来进行简单工具的开发工作。那么,疑问来了,是不是可以用纯win32进行对话框的基本开发呢?答案是肯定,下面我们就来看一下怎么可以达到这一点。


    大家如果还有印象的话,传统win32 app的开发流程是这样的,首先注册一个WNDCLASSEX,接着创建窗口,最后就是接收消息、处理消息,所有消息都是在wndProc里面解决。那对话框怎么弄呢,其实更简单,它除了不再需要注册WNDCLASSEX之外,剩下来的流程都是一样的,

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	// TODO: Place code here.
	MSG msg;

	HWND hWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), NULL, (DLGPROC)About);
	ShowWindow(hWnd, nCmdShow);
	
	// Main message loop:
	while (GetMessage(&msg, NULL, 0, 0)) 
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	
	}
	
	return msg.wParam;
}

    从代码中,大家可以发现,基于对话框的开发更简单。整个流程就是两个部分,一个是创建对话框,另外一个是获取消息、处理消息。那么消息在什么地方处理呢?其实就在CreateDialog里面注册的函数指针About这里处理,

// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
	case WM_INITDIALOG:
		return TRUE;
		
	case WM_COMMAND:
		PostQuitMessage(0);
		break;
	}
    return FALSE;
}

    对话框没有实现什么功能,主要就是对WM_INITDIALOG和WM_COMMAND两个消息进行处理。当然,如果大家需要在对话框里面添加什么控件的话,只需要在About填上对应的消息处理逻辑就可以了。


    从上面的代码来看,基于对话框的应用开发其实也不复杂。只是大家mfc用多了,自身对工具和平台产生了依赖。从个人发展来说,这其实是很不利的。win32开发虽然花的时间多了一些,但是对原理和流程可以理解得很透彻,这一点是mfc比不了的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值