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

转载 2012年03月22日 13:55:09

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

    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. 完成编译运行。你的对话框的风格是不是和主窗口一样,有没显示出来?

用MFC做漂亮界面之美化标题(使用静态控件)

上次,我们已经为我们的对话框添加了关闭按钮,最小化按钮,今天,我们一起为它添加一个标题。因为我们的对话框没有标题栏,所以我们需要添加一个静态控件(Static),来显示标题。 首先我们为对话框添加一...
  • u011711997
  • u011711997
  • 2016年09月19日 12:09
  • 3489

inno setup软件--教你如何制作一个漂亮的安装程序

当我们制作好一个课件或程序的时候就会想给它做漂亮的安装程序,特别是用AUTHORWARE制作的课件,由于必须把XTRAS目录下相关的文件与可执行文件一起提供,这时我们就需要给课件制作安装程序。而且制作...
  • ccx_john
  • ccx_john
  • 2013年11月16日 21:21
  • 2730

MFC--UI设计(1) 漂亮的控件综合类

MFC学习之路之UI --(1) 漂亮的控件综合类 在如今的窗口界面编程中,Windows软件的界面基本上用WPF来开发,但学MFC来写界面还是有必要的。道理很简单,WPF是基于托管...
  • limingmcu
  • limingmcu
  • 2015年02月28日 18:30
  • 2475

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

一、统一风格漂亮界面设计的理论与实现 a.窗口和对话框 Windows操作系中窗口和对话框在我们看来是一样的,就是一个四边形,有标题栏、系统按钮,边框等,可移动和可变大小。实际上窗口和对话...
  • ylo523
  • ylo523
  • 2014年11月13日 14:56
  • 291

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

类WindowXp 开始菜单到现在基本上是完美实现,在功能上基本和WindowXp 与Vista 操作系统的开始菜单一样,界面当然漂亮,通过编程能实现风格多样,具有个性化的功能菜单。为了方便使用,本人...
  • woaixiaozhe
  • woaixiaozhe
  • 2012年03月22日 13:59
  • 600

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

实现令人满意的风格统一的软件界面确实很难,象网友提到的MessageBox、FileDialog、FontDialog、目录选择对话框等MFC内部甚至系统DLL内的对话框,要想让它变脸可不容易。有人说...
  • woaixiaozhe
  • woaixiaozhe
  • 2012年03月22日 13:56
  • 608

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

我们使用过很多的软件, 给我们留下印象很深的是那些界面漂亮且迷人的软件, 国外的软件象QuickTime,国产的象金山词霸等,它们的软件界面设计风格都有独特之处。本人跟据自已的经验和大家探讨一下软件的...
  • ylo523
  • ylo523
  • 2014年11月13日 14:53
  • 603

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

漂亮界面的软件应该有漂亮的菜单,大家对 Windows XP 的开始菜单肯定不陌生吧,那种菜单独具风格。于是去研究了一下,发现其实它并不是真CMenu也不是其派生类,分析其结构发现其主要是两个 L...
  • woaixiaozhe
  • woaixiaozhe
  • 2012年03月22日 13:57
  • 434

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

实现令人满意的风格统一的软件界面确实很难, 象网友提到的MessageBox、FileDialog、FontDialog、目录选择对话框等MFC内部甚至系统DLL内的对话框,要想让它变脸可不容易。有人...
  • ylo523
  • ylo523
  • 2014年11月13日 15:00
  • 297

让你的软件界面更漂亮(四)——不完美之菜单

漂亮界面的软件应该有漂亮的菜单,大家对 Windows XP 的开始菜单肯定不陌生吧,那种菜单独具风格。于是去研究了一下,发现其实它并不是真CMenu也不是其派生类,分析其结构发现其主要是两个 Lis...
  • ylo523
  • ylo523
  • 2014年11月13日 15:02
  • 276
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让你的软件界面更漂亮(二)
举报原因:
原因补充:

(最多只允许输入30个字)