一种可用于系统动态显示关于信息的方法

2025-12-10 0 546

一种可用于系统动态显示关于信息方法,很有用哦(^_^)

关键字 帮助文件信息显示
原作者姓名 戚高
文章原始出处 原创

介绍
一般的系统帮助文件在显示关于帮助信息的时候大部分采用的方法是静态的形式将要显示的内容显示到界面上,由于这次担任项目开发,我总觉得那样太单调了,于是,在各个网站搜索后发现了一个很好的控件类(字模显示控件类),于是我进行扩充完成了一些动态显示的功能,完成后的各种要显示的帮助信息能够象放映电影一样的进行动态显示,效果蛮好的,现将制作过程合代码及演示效果写出来,希望对这个方面有研究或者寻求好方法的人有帮助.
同时本文章代码中显示的文本信息各位可以根据需要进行自己修改.

正文
显示帮助文件的时候我采用的是全屏的显示方法,但是如果就VIEW全屏的方法的话我总觉得太难看了,于是我首先在全屏的基础上贴上一个背景图片,然后在背景图片上加载一个功能显示就可以了.其实简单的方法是在背景图片上直接动态创建一个CSTATIC控件就可以了,不过由于我的系统涉及到别的许多功能界面要处理,所以我用了一个对话框的形式,采用无模式对话框形式,然后将她创建完成后MOVEWINDOW到指定位置就可以了.

制作步骤:
启动VC,建立一个基于CVIEW的单文档功能,其余保持默认设置就可以了.
全屏的概念我没有象传统的那样进行,而是将主框架MoveWindow到屏幕的分辨率大小,然后去掉标题兰,菜单栏,工具栏,状态栏等显示就差不多一个全屏的效果了,然后在这个上面贴上背景图片就可以了.也许这个根本不能算全屏的概念(^_^).具体实现步骤如下:
修改APP的InitInstance()函数,修改的地方如下:
// The one and only window has been initialized, so show and update it.
m_pMainWnd->SetMenu(NULL);//去掉菜单
m_pMainWnd->ModifyStyle(WS_THICKFRAME|WS_CAPTION,NULL);//修改窗体属性
m_pMainWnd->MoveWindow(CRect(0,0,::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN)),TRUE);//将窗体移动到屏幕的分辨率大小地方

m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//这个就不要解释了
m_pMainWnd->UpdateWindow();

然后修改MainFrame类成员函数去掉工具栏合状态栏就可以了.修改PreCreateWindow(CREATESTRUCT& cs)函数,修改如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);//隐藏任务栏,不隐藏的话,这个东西总是在不适当的时候出现影响整体效果

return 0;
}

上面步骤隐藏了WINDOWS任务栏,所以我们必须在程序退出的时候进行恢复,不要程序结束了也不会见到的.由于程序退出要发送WM_CLOSE消息,所以我们截获MainFrame的WM_CLOSE消息就可以了,在这里恢复状态栏,代码如下:
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_SHOW);//恢复任务栏
CFrameWnd::OnClose();
}

到这里,基本准备工作我们已经完成了,下面的任务是贴背景位图和创建显示的对话框.
贴背景位图:装载背景位图,映射VIEW的WM_PAITN消息,然后贴上背景位图,同时映射WM_EARSEBKGND消息,去处屏幕的擦除工作,将返回语句修改成为:return TRUE就可以了.
void CAboutDemoView::OnPaint()
{
// TODO: Add your message handler code here
CPaintDC dc(this); // device context for painting
HBITMAP hbitmap;
hbitmap=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BACKBMP));
HDC hMenDC=::CreateCompatibleDC(NULL);
SelectObject(hMenDC,hbitmap);
::StretchBlt(dc.m_hDC,0,0,1024,768,hMenDC,0,0,1024,768,SRCCOPY);
::DeleteDC(hMenDC);
::DeleteObject(hbitmap);
// Do not call CView::OnPaint() for painting messages
}
建立一个用于显示相关信息的对话框资源,修改对话框属性,Style->Popup,Border->None;并建立对话框类CShowAboutDlg;然后在对话框上面放置一个CSTATIC控件,并调整位置.
在VIEW中创建这个无模式的对话框然后显示:
CShowAboutDlg *m_pAboutDlg;
CRect rect;
m_pAboutDlg = new CShowAboutDlg();
m_pAboutDlg->Create(IDD_ABOUT);
m_pAboutDlg->MoveWindow(CRect(18,18,::GetSystemMetrics(SM_CXSCREEN)-13,::GetSystemMetrics(SM_CYSCREEN)-16),TRUE); //因为背景图片有一个边框,所以这里应该吧那个位置留出来
m_pAboutDlg->GetClientRect(&rect);
m_pAboutDlg->m_AboutCtrl.MoveWindow(rect,TRUE);//是这个PIC控件占满对话框客户区域
m_pAboutDlg->ShowWindow(SW_SHOW);

下面就是加入字模显示控件类的文件了.将ZgMemDC ,ZgDraw.h,ZgDraw.cpp,TitleShow.h,TitleShow.cpp,PublicClass.cpp,PublicClass.h加入工程,然后加入AutoFont.h和AutoFont.cpp,这个类功能不用说了,在上篇文章中我已经介绍了.在那位提供字模显示控件类的基础上,我修改了其中的适量代码,进行了文字显示方面的修改,因为那个原来的类的字体不适合我们现在系统显示的要求(^_^).

然后就是在对话框类中加载显示消息就可以了.
定义显示CSTATIC类对象位TitleShow,然后在初始化里面添加你的信息显示内容:
****
其中还有一步就是截获回车和ESC键对对话框的退出工作.
BOOL CShowAboutDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_RETURN:
return TRUE;
case VK_ESCAPE:
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}

至此,程序基本工作已经完成了,编译运行你的工程看看效果吧.

下载源码

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 一种可用于系统动态显示关于信息的方法 https://www.zuozi.net/32325.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务