XP风格复活节彩蛋的实现

2016-01-29 11:52 5 1 收藏

XP风格复活节彩蛋的实现,XP风格复活节彩蛋的实现

【 tulaoshi.com - C语言心得技巧 】

XP风格复活节彩蛋的实现
作者:徐景周

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

下载本文示例代码

如果您用过微软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; }
2、隐藏信息的激活或隐藏的函数
//功能: 是否荣誉显示void CAboutDlg::OnMore() {m_bVertical = !m_bVertical; if(m_bVertical == FALSE)//不显示{ SetDlgItemText(ID_MORE,_T("更多>>"));SizeWindow(m_nReducedHeight,true);} else//显示{ SetDlgItemText(ID_MORE,_T("<<隐藏"));SizeWindow(m_nReducedHeight,false);} UpdateWindow(); }//功能: 伸展或收缩对话框    void CAboutDlg::SizeWindow(int ReduceHeight, bool bExtend){CRect rc;GetWindowRect(&rc);if(bExtend){for (int i= 0; i < ReduceHeight; i++){rc.bottom--;MoveWindow(&rc);}}else{for (int i= 0; i < ReduceHeight; i++){rc.bottom++;MoveWindow(&rc);}}}
3、在特殊的键盘及鼠标热键下激隐藏信息显示
//功能: 鼠标热键,在图片框按住Ctrl键,双击鼠标右键可显示,显示隐藏的信息。  void CAboutDlg::OnRButtonDblClk(UINT nFlags, CPoint point) {if(nFlags==(MK_CONTROL|MK_RBUTTON )){CPictureEx *pAbout =(CPictureEx *)GetDlgItem(IDC_FLAG);CRect rcAbout; pAbout->GetWindowRect(&rcAbout);CPoint pt;GetCursorPos(&pt);if(rcAbout.PtInRect(pt))OnMore();}CDialog::OnLButtonDblClk(nFlags, point);}//*功能:键盘热键<Ctrl+Alt+F3键>显示隐藏的信息LRESULT CAboutDlg::OnHotKey(WPARAM wParam,LPARAM lParam){if(wParam==WM_SHOWHOTKEY){OnMore();}return 0;}
4、别忘了收尾工作,销毁已注册的系统热键
//* 功能:程序关闭时的处理工作BOOL CAboutDlg::DestroyWindow() {//注销已注册的系统热键UnregisterHotKey(GetSafeHwnd(),WM_SHOWHOTKEY);return CDialog::DestroyWindow();}
以上部分代码具体实现的细节问题,可在下载实例代码后,仔细查看源码既可(内有详细注释)。


联系方式:
地址:陕西省西安市劳动路2号院六单元
邮编:710082
作者EMAIL:jingzhou_xu@163.net
未来工作室(Future Studio)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

来源:https://www.tulaoshi.com/n/20160129/1483662.html

延伸阅读
标签: 摄影
听说世上每一只蛋的外形都是独特,没有两只完全一样,所以换句话说,蛋们是颇有个性的。但无论如何,拍摄鸡蛋、鹅蛋、鸟蛋都是一个有趣的题材,就趁着复活节,让我们欣赏别人的创作之余,又刺激大家的创意吧。 1. 由蛋壳开始 最基本的方式当然是修饰外壳,因为鸡蛋的形状简单,正好装载大家满满的创意,然后通过照片表现出来。拍摄的时候...
标签: 彩蛋 复活节
石头彩蛋       在我国有许多传统的节日礼物,比如春节的剪纸,端午的粽子。在临近节日之际,这些礼物都会格外的火热。不止我们国家,世界各地的国家都有代表节日的礼物,说到复活节就会立马想到彩蛋,下面一起来看下有哪些好看又有创意的复活节彩蛋吧。 微表情彩蛋        在彩蛋上画...
彩蛋制作视频 准备材料 材料: 笔刷、染料、蛋壳、杯子(纸质塑料都可以)。 我提前把蛋壳弄出来了,在这里简单讲述一下具体的步骤。拿出一个干净,将表面的脏东西洗干净,用针在蛋的顶、末端各扎一个孔,对着某个孔吹气,让蛋液流出来,之后用清水将其冲洗干净。 画上图案 用干净的纸将蛋壳表面的水擦干净,如果不急...
准备材料 鸡蛋、拼贴胶水(蝶谷巴特)、干燥押花、水彩笔。 涂抹胶水 如果想要长久保存,需要先把蛋清和蛋黄沥去。然后在蛋壳表面涂抹胶水。 贴上干花 把干花植物黏贴上去。 静置晾干 晾干就已经完成。 成品展示 很简单的复活节押花彩蛋小制作,来试试吧~更多有关内容可以查看 幼儿园手工制作大全 ...
复活节彩蛋制作教程                                                                                      ...

经验教程

757

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部