note : windows message process
发布日期:2021-06-30 22:04:23 浏览次数:2 分类:技术文章

本文共 2537 字,大约阅读时间需要 8 分钟。

实验环境: vs2010 + WTL8.1 + dialog

实验目的:为了发生特定系统消息时,做一些额外的处理。

  e.g.

  * ALT+F4关闭程序

  * 点击任务栏上的程序图标,恢复程序

// MainDlg.h : interface of the CMainDlg class///#pragma onceclass CMainDlg : public CDialogImpl
, public CUpdateUI
, public CMessageFilter, public CIdleHandler{public: enum { IDD = IDD_MAINDLG }; virtual BOOL PreTranslateMessage(MSG* pMsg); virtual BOOL OnIdle(); BEGIN_UPDATE_UI_MAP(CMainDlg) END_UPDATE_UI_MAP() BEGIN_MSG_MAP(CMainDlg) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) MESSAGE_HANDLER(WM_DESTROY, OnDestroy) COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout) COMMAND_ID_HANDLER(IDOK, OnOK) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) MESSAGE_HANDLER(WM_SYSCOMMAND, OnSysCommand) END_MSG_MAP()// Handler prototypes (uncomment arguments if needed):// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/) LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/); LRESULT OnSysCommand(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); void CloseDialog(int nVal);};

LRESULT CMainDlg::OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & bHandled){	if (WM_SYSCOMMAND != uMsg)		return -1;		OutputDebugStringW(L">> CMainDlg::OnSysCommand\r\n");	switch (wParam)	{		/// when maindlg show normal, click the minimize dialog on task tar, entry here	case SC_MINIMIZE: ///< the minimize button of main dialog press down		OutputDebugStringW(L"SC_MINIMIZE\r\n");		break;		/// ALT + F4 key press down	case SC_CLOSE: ///< the close button of main dialog press down		OutputDebugStringW(L"SC_CLOSE\r\n");		break;	case SC_RESTORE: ///< when maindlg minimized, click the minimize dialog on task tar, entry here		/// if need, refresh main dialog when display resolution changed		OutputDebugStringW(L"SC_RESTORE\r\n");		break;	default:		break;	}	bHandled = FALSE; ///< if set bHandled to TRUE, the message process invalid	OutputDebugStringW(L"<< CMainDlg::OnSysCommand\r\n");	return 0;}

转载地址:https://lostspeed.blog.csdn.net/article/details/18182563 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:note : RemoveServiceByName
下一篇:跟大家分享一下directUI的心得

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月19日 15时16分56秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章