CMFCDesktopAlertWnd实现桌面弹出消息框

来源:互联网 发布:汪涵 知乎 编辑:程序博客网 时间:2024/04/30 15:29

用CMFCDesktopAlertWnd实现类似于QQ消息框:

 

 

The CMFCDesktopAlertWnd class implements the functionality of a modeless dialog box which appears on the screen to inform the user about an event

 

步骤:

  1. 创建一个CMFCDesktopAlertWnd 的指针。
CMFCDesktopAlertWnd* pPopUp=new CMFCDesktopAlertWnd;
2.设置各种属性。
//设置弹出类型pPopUp->SetAnimationType((CMFCPopupMenu::ANIMATION_TYPE)m_nAnimation);//弹出速度pPopUp->SetAnimationSpeed(m_nAnimationSpeed);//透明度pPopUp->SetTransparency((BYTE)m_nTransparency);//自动关闭的延迟时间,如果为0则不自动关闭pPopUp->SetAutoCloseTime(m_bAutoClose?m_nAutoCloseTime*1000:0);
3.调用create函数创建 。create有两个重载函数。一个是用CMFCDesktopAlertWndInfo类实现,另外一个是用自定义的对话框实现。
CMFCDesktopAlertWndInfo实现:
CMFCDesktopAlertWndInfo params;if (m_nIcon>0){params.m_hIcon=m_Icons.ExtractIcon(m_nIcon-1);}if (m_strText.IsEmpty()&&m_strLink.IsEmpty()){m_strText=_T(" ");}params.m_strText=m_strText;params.m_strURL=m_strLink;params.m_nURLCmdID=101;pPopUp->Create(this,params,NULL,CPoint(-1,-1));
自定义对话框实现
pPopUp->Create (this, IDD_DIALOG1, m_menuPopup.GetSubMenu (0)->GetSafeHmenu (), CPoint(-1,-1),RUNTIME_CLASS(CMyPopupDlg)); 
参数: 窗口指针,资源ID,菜单,位置,(-1,-1)在右下角,处理消息的类,继承于CMFCDesktopAlertDialog
CMyPopupDlg的代码
class CMyPopupDlg : public CMFCDesktopAlertDialog{DECLARE_DYNCREATE(CMyPopupDlg)public:CMyPopupDlg();   // 标准构造函数// 对话框数据enum { IDD = IDD_DIALOG1 };protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持DECLARE_MESSAGE_MAP()public:CMFCDesktopAlertWndButton m_btnFlag;CMFCDesktopAlertWndButton m_btnDelete;CStatic m_wndFrom;CMFCLinkCtrl m_btnRL;virtual BOOL OnInitDialog();afx_msg void OnBnClickedFlag();afx_msg void OnBnClickedDelete();afx_msg void OnBnClickedButton1();};

<<span style="color:#cc0000;">这里要注意DECLARE_DYNCREATE(CMyPopupDlg) 其他地方和处理对话框消息完全一样。 cpp文件中 也要有 IMPLEMENT_DYNCREATE(CMyPopupDlg, CMFCDesktopAlertDialog)

 

 

 

原创粉丝点击