MFC友好信息提示类
来源:互联网 发布:大数据 应用 编辑:程序博客网 时间:2024/05/22 02:32
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033
本文实现了类似QQ弹出窗口的功能,并封装成类。
主要功能:
1、动画弹出,可以设置类型
2、弹出信息后自动消失。
3、可以设置字体大小和颜色。
4、设置窗口停留时间和显示类型。
5、不占用主窗口的焦点。
整个工程下载地址:
http://download.csdn.net/detail/itas109/9070741
实现效果如下:
弹出窗类的代码如下:
ShowInfoDlg.h
<span style="font-size:18px;">/***FILENAMEShowInfoDlg.h****PURPOSE这个类可以友好的弹出提示窗口,并且不占用主窗口的焦点。**提示信息字体的大小和颜色等可以设置**默认弹出框在桌面可用区域的右下角******CREATION DATE2015-09-01**LAST MODIFICATION2015-09-01****AUTHORitas109**Blog blog.csdn.net/itas109***/#if !defined(AFX_SHOWINFODLG_H__273027B9_8244_4624_BC2B_44491EA67BE8__INCLUDED_)#define AFX_SHOWINFODLG_H__273027B9_8244_4624_BC2B_44491EA67BE8__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000// ShowInfoDlg.h : header file//#include "resource.h" //IDD_DIALOG_SHOWINFO的头文件//定义动画类型#define AW_CENTER 0x00000010 // 若使用了AW_HIDE标志,则使窗口向内重叠,即收缩窗口;若未使用AW_HIDE标志,则使窗口向外扩展,即展开窗口#define AW_HOR_POSITIVE 0x00000001 // 自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略#define AW_HOR_NEGATIVE 0x00000002#define AW_VER_POSITIVE 0x00000004 // 自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略#define AW_VER_NEGATIVE 0x00000008 // 自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略#define AW_HIDE 0x00010000 // 隐藏窗口,缺省则显示窗口#define AW_ACTIVATE 0x00020000 // 激活窗口。在使用了AW_HIDE标志后不能使用这个标志#define AW_SLIDE 0x00040000 // 使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略#define AW_BLEND 0x00080000 // 实现淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志/////////////////////////////////////////////////////////////////////////////// ShowInfoDlg dialogclass ShowInfoDlg : public CDialog{// Constructionpublic:void ShowDlg(CString str, int showType=1, int showTimeMS = 500);ShowInfoDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data//{{AFX_DATA(ShowInfoDlg)//如果DLG改变,此处修改为需要显示的DLG的IDD GX 20150826enum { IDD = IDD_DIALOG_SHOWINFO };// NOTE: the ClassWizard will add data members here//}}AFX_DATA// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(ShowInfoDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected:// Generated message map functions//{{AFX_MSG(ShowInfoDlg)afx_msg void OnTimer(UINT nIDEvent);virtual BOOL OnInitDialog();afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);//}}AFX_MSGDECLARE_MESSAGE_MAP()private:CBrush* m_Brush;CFont m_font;void ShowType(int nType = 1);};//{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_SHOWINFODLG_H__273027B9_8244_4624_BC2B_44491EA67BE8__INCLUDED_)</span>
ShowInfoDlg.cpp
<span style="font-size:18px;">/***FILENAMEShowInfoDlg.h****PURPOSE这个类可以友好的弹出提示窗口,并且不占用主窗口的焦点。**提示信息字体的大小和颜色等可以设置**默认弹出框在桌面可用区域的右下角******CREATION DATE2015-09-01**LAST MODIFICATION2015-09-01****AUTHORitas109**Blog blog.csdn.net/itas109***/// ShowInfoDlg.cpp : implementation file//#include "stdafx.h"#include "ShowInfoDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// ShowInfoDlg dialogShowInfoDlg::ShowInfoDlg(CWnd* pParent /*=NULL*/): CDialog(ShowInfoDlg::IDD, pParent){//{{AFX_DATA_INIT(ShowInfoDlg)// NOTE: the ClassWizard will add member initialization here//}}AFX_DATA_INIT}void ShowInfoDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(ShowInfoDlg)// NOTE: the ClassWizard will add DDX and DDV calls here//}}AFX_DATA_MAP}BOOL ShowInfoDlg::OnInitDialog() {CDialog::OnInitDialog();// TODO: Add extra initialization here// 获得桌面大小CRect rectWorkArea;SystemParametersInfo(SPI_GETWORKAREA, 0, &rectWorkArea, SPIF_SENDCHANGE); // 获得对话框大小CRect rectDlg;GetWindowRect(&rectDlg);int nW = rectDlg.Width();int nH = rectDlg.Height();// CWnd::SetWindowPos See from MSDN//工作区域右下角显示//SWP_NOACTIVATE 窗口置顶不激活SetWindowPos(&CWnd::wndTopMost, rectWorkArea.right-nW-5, rectWorkArea.bottom-nH-5, nW, nH, SWP_NOACTIVATE); // 窗口置顶不激活//字体及大小m_font.CreatePointFont(100,"宋体");return TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE}BEGIN_MESSAGE_MAP(ShowInfoDlg, CDialog)//{{AFX_MSG_MAP(ShowInfoDlg)ON_WM_TIMER()ON_WM_CTLCOLOR()//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// ShowInfoDlg message handlersvoid ShowInfoDlg::OnTimer(UINT nIDEvent) {// TODO: Add your message handler code here and/or call defaultif (nIDEvent == 1){/*HINSTANCE hInst = LoadLibrary("User32.DLL");typedef BOOL(WINAPI MYFUNC(HWND, DWORD, DWORD));// 声明函数MYFUNC* AnimateWindow;AnimateWindow = (MYFUNC*)::GetProcAddress(hInst, "AnimateWindow");AnimateWindow(this->GetSafeHwnd(), 200, AW_HIDE | AW_BLEND);FreeLibrary(hInst);*/CDialog::OnOK();//这种方式会受到时间的影响 因为定时器有延时//CMainFrame *pMainFrame = (CMainFrame *)AfxGetApp()->m_pMainWnd;//当前程序的主窗口的指针//::SetActiveWindow(pMainFrame->m_hWnd);//激活主窗口程序,把焦点还给主窗口KillTimer(1);}CDialog::OnTimer(nIDEvent);}void ShowInfoDlg::ShowDlg(CString str, int showType/* =1 */, int showTimeMS /* = 500 */){//只改变字体大小和字体类型//this->GetDlgItem(IDC_STATIC_TIP)->SetFont(&m_font);//窗体文字this->GetDlgItem(IDC_STATIC_TIP)->SetWindowText(_T(str));ShowType(showType);SetTimer(1, showTimeMS, NULL);}void ShowInfoDlg::ShowType(int nType /* = 1 */){if (1 == nType){// 淡入、淡出// CenterWindow();// 对话框处于中心位置HINSTANCE hInst = LoadLibrary("User32.DLL");// 导入动态链接库User32.DLLtypedef BOOL(WINAPI MYFUNC(HWND hwnd, DWORD dwTime, DWORD dwFlags));//dwTime动画持续的时间(标准200ms)// 声明函数MYFUNC* AnimateWindow;AnimateWindow = (MYFUNC*)::GetProcAddress(hInst, "AnimateWindow");AnimateWindow(this->m_hWnd, 300, AW_BLEND);FreeLibrary(hInst);}else if (2 == nType){// 从下向上HINSTANCE hInst = LoadLibrary("user32.dll");typedef UINT(WINAPI* PMYFUNC)(HWND hwnd, DWORD dwTime,DWORD dwFlags);// 声明函数PMYFUNC pAnimateWindow;if(NULL != hInst){pAnimateWindow = (PMYFUNC)::GetProcAddress(hInst, "AnimateWindow");pAnimateWindow(GetSafeHwnd(), 300, AW_SLIDE | AW_VER_NEGATIVE);FreeLibrary(hInst);}}//Sleep会使CPU暂停 尽量不使用该函数//DLG显示时间//Sleep(showTimeMS);}HBRUSH ShowInfoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: Change any attributes of the DC hereif (pWnd->GetDlgCtrlID() == IDC_STATIC_TIP){//pDC->SetBkMode(TRANSPARENT);//字体背景透明pDC->SetTextColor(RGB(255,0,0));//字体颜色pDC->SelectObject(&m_font);//字体大小}// TODO: Return a different brush if the default is not desiredreturn hbr;}</span>
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033
0 0
- MFC友好信息提示类
- 友好提示
- ajax提交等待服务器响应友好提示信息的实现
- mfc 弹出框提示信息
- Flex友好提示、警告
- Tooltip:利用javascript模拟实现Tooltip,以便提供友好的提示信息
- Crash: 处理UncaughtExcption,捕获未处理异常信息,界面友好提示用户
- 友好变量,友好方法,友好类
- MFC 应用程序中的菜单提示信息
- MFC 给自定义工具栏添加提示信息
- [MFC]提示信息的添加CToolTipCtrl
- MFC CTooLBar 工具栏显示提示信息ToolTip
- MFC 添加关闭提示信息框
- jquery重写友好提示对话框
- 简单的友好错误提示
- android报错后,如果友好提示
- ListView 空值时的友好提示
- ListView 空值时的友好提示
- linux系统调用分析
- HDU1021 - Fibonacci Again (水题 找规律)
- STM32F4——TFT-LCD原理及FSMC
- Objective-C学习笔记十:继承二
- mongoDB 3.0安全权限访问控制
- MFC友好信息提示类
- spring jdbc的使用
- 激活硬盘被关闭的DMA模式
- 第三篇 (面向对象)①: 关于Java的面向对象特性
- Objective-C学习笔记11:多态和动态类型
- iOS 设置导航栏 Navigationbar相关信息
- 我自己的
- 欢迎使用CSDN-markdown编辑器
- mysql 自增字段的设置