WEB开发网
开发学院软件开发VC XP风格复活节彩蛋的实现 阅读

XP风格复活节彩蛋的实现

 2010-06-23 20:41:07 来源:WEB开发网   
核心提示:如果您用过微软Office系列产品的话,一定会知道它们中很多在"关于"对话框中都隐藏了一些小功能,XP风格复活节彩蛋的实现,只有当用户点击某些特殊的键盘或鼠标按键时,这些功能才会显示出来(就象复活节彩蛋似的变出来),在"关于"对话框中同时按下Ctrl键,在Logo动态图像中双击鼠

如果您用过微软Office系列产品的话,一定会知道它们中很多在"关于"对话框中都隐藏了一些小功能,只有当用户点击某些特殊的键盘或鼠标按键时,这些功能才会显示出来(就象复活节彩蛋似的变出来)。您象知道类似的功能是怎么实现的么?下面,我做了个示例程序,可以告诉您它们实现的基本原理(示例中采用了整套XP风格化的界面设计)。如下图:其中图一为XP风格界面,图二为类似复活节彩蛋的实现界面。

图一

图二

基本构成思想:

实现原理很简单,初始时将隐藏的部分不显示出来(既限制对话框的高度,默认高度=总高度 -- 隐藏部分高度),再设定特殊的键盘或鼠标按鍵来激活它既可。本示例程序采用二种方式,键盘热键和鼠标热键,其中键盘热键为"关于"对话框中同时按下Ctrl+Alt+F3键可激活隐藏信息,鼠标热键则为,在"关于"对话框中同时按下Ctrl键,在Logo动态图像中双击鼠标右键既可激活隐藏信息。下面让我们来看看它的具体实现情况吧!

关键代码实现:

1、 默认将隐藏部分不显示出来

#define WM_SHOWHOTKEY WM_USER + 101 //自定义系统热键消息
BOOL CAboutDlg::OnInitDialog()
{
  //"关于"对话框中对话框可收缩效果
  CRect Rect1,Rect2;     //对话框收缩时大小

  GetDlgItem(IDC_DYCREDITS)->GetWindowRect(Rect1);
  GetDlgItem(IDC_COPYRIGHT)->GetWindowRect(Rect2);
  m_nReducedHeight = Rect1.Height()+(Rect1.top -Rect2.bottom)/2; //收缩后窗体高度
  dlgRect.bottom -= (Rect1.Height()+(Rect1.top -Rect2.bottom)/2);
  MoveWindow(&dlgRect);  //如果要显示对话框起始动态效果的话,不能使用该句
  m_bVertical=false;      //默认收缩对话框

  //注册系统热键,用来显示隐藏信息<Ctrl+Alt+F3键>
  RegisterHotKey(GetSafeHwnd(),WM_SHOWHOTKEY,MOD_ALT|MOD_CONTROL,VK_F3);

  return TRUE;
}

1 2  下一页

Tags:XP 风格 复活节

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接