分享
 
 
 

让你的软件界面更漂亮(二)

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

让你的软件界面更漂亮(二)

作者:朱一松

一、统一风格漂亮界面设计的理论与实现

a.窗口和对话框

Windows操作系中窗口和对话框在我们看来是一样的,就是一个四边形,有标题栏、系统按钮,边框等,可移动和可变大小。实际上窗口和对话框是有的区别的。在创建对话框窗口时的工作中要发生两个主要过程:对话框的过程和其窗口过程。Win32

SDK对话框使用了系统提供的对话框窗口的窗口过程和对话框过程,对话框过程将被窗口过程调用。在MFC下,所有的窗口类都使用了同一个窗口过程,对话框类也一样。MFC对话框过程只处理WM_INITDIALOG消息,其余都让窗口过程处理,我们只能在函数OnInitDialog()中有唯一机会处理我们的对话框的初始化工作。因而我们设计界面时要在窗口过程处理中相关消息实现我们的界面。

b. 几个有关对话框窗口消息的处理

1.WM_NCPAINT:重画非客户区消息

重载此消函数,可以标题栏上为所欲为。

2. WM_NCLBUTTONDOWN:在非客户区上按下鼠标左键消息

要想在标题栏相应鼠标左键,可重载此消函数

3.WM_NCMOUSEMOVE:在非客户区上移动鼠标会产生此消息

4.WM_SIZE:在窗口改变大小后产生此消息。

为了使软件更专业,调整对放框大小时,里面的各控件也应合理调整位置和大小,

重载此消函数可实现目的。还有很几个,其它的不介绍了。

c. 统一的界面风格实现

如何运用上述知识请参考我的前一文《让你的软件界面更漂亮(一)》中有介绍并有源程序。漂亮界面的统一风格是如何实现的将是本文要讨论主要内容。

我们知道Windows操作系统窗口风格基本上是一致的,微软的应用软件程序也和操作系统风格基本是统一的。所以使我们的CDialog 也跟其一样,要改变它的界面风格很困难。除非你对MFC了如指掌,甚至要了解操作系统内核。本人在摸索过程中经过无数次碰壁后,终于找到了希望。

请看下面两幅图:

图一

图二

看了上面两图你是不是对VC有信心了?Visual C++ 可实现你想要的统一风格界面。请看如何实现:

1.首先要建立漂亮界面主窗口。它也是一个对话框,方法前文有介绍。

2.处理漂亮界面主窗口的OnInitDialog()函数。很重要!!

BOOL CTitleBarDlg::OnInitDialog()

{

//此处 不能修改和添加代码!因为其它对话框的OnInitDialog()要用到

m_ToolTip.Create(this,TTS_ALWAYSTIP);//Create提示

m_ReSizeFlag = TRUE;

CRect rtWnd;

GetClientRect(&rtWnd);

m_OldWidth = rtWnd.Width();

m_OldHeight = rtWnd.Height();

OldPoint.x = rtWnd.Width();

OldPoint.y = rtWnd.Height();

if(!m_BaseFlag)

{

m_BaseFlag = TRUE;

CDialog::OnInitDialog();

//************************************

你只能在处修改和添加你所需主窗口初始化的代码

……

//************************************

}

return TRUE;

}

3.建立你的对话框和对话框类。

用对话框资源编辑器完成对话框模板。用ClassWizard生成CyourDlg类此时基类只能为CDialog。

4.修改基类CDialog为漂亮界面类(CtitleBarDlg)

yourDlg.h yourDlg.cpp 内的CDialog都要改,用Edit/Replace功能快些且安全。

在yourDlg.h还要包括TitleBarDlg.h

注意:对话框构造函数第一个参数CtitleBarDlg nID 要删除。否则通Build通不过。

5. 显示你的窗口

//显示代码

CyouDlg *pMyDlg;

pMyDlg = new CyouDlg;

pMyDlg-Create(IDD_YOUR_DLG);

pMyDlg-ShowWindow(SW_SHOW);

这种代码要在适当的时候delete pMyDlg,防内存泄露。由于 pMyDlg没有定义为全局,处理它有一定难度。如果是用DoModal()显示就好了,大家可以去试一下。解决了告诉我!

6. 完成编译运行。你的对话框的风格是不是和主窗口一样,有没显示出来?

二.说明

统一风格的漂亮界面基本达到了目的。但同样也存在几个问题:

1.漂亮界面界必须是主窗口。我还没有想出方法能让它独立出来。

2.显示其它子窗口只能是非模式对话框窗口方式。我尝试DoModal显示但没有成功。但我分析MFC后找到了笨方法,MFC也是这么做。

3.基于述原因,我建立了统一的界面风格的开发模板,只有在此模板上开发就能实现软件漂亮统一的界面风格。需要可和我联系! 若有机会我会和大家继续探讨漂亮界面的实现的其它难点。

三、结束语

源代码请参考《让你的软件界面更漂亮(一)》中的源代码

本人联系方法:song_0962@sina.com QQ:34544052

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有