MFC对话框自动退出messagebox

对话框自动退出messagebox

  1. 创建MessageBox和定时器
void xxxDlg::OnBnClickedApply()
{
	// TODO: 在此添加控件通知处理程序代码
	UINT nRet = MessageBox(_T("Do you want to save?"), _T("apply"), MB_YESNO);
	if (nRet == IDYES)
	{
		A2llist = m_A2llist;
		//创建定时器,用于自动触发关闭Message对话框  
		SetTimer(3, 1000, NULL);
		//启动一个Message对话框  
		MessageBox("save successful", "MyMessage", MB_YESNO);
		//MessageBox("save successful");
	}
}
  1. 为定时器添加响应消息函数

void xxxDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	//与设置的定时器时间相同时触发定时器
	if (nIDEvent == 3)
	{
		HANDLE hWnd = ::FindWindowEx(NULL, NULL, NULL, "MyMessage"); //查找消息框的标题(与之前设置的要保持一致)

		if (hWnd)
		{
			// way1:直接发送 WM_CLOSE 消息。
			//::SendMessage((HWND)hWnd, WM_CLOSE, NULL, NULL);

			// way2:
			//::EndDialog((HWND)hWnd, IDNO);//返回到上一个界面

			// way3:模拟窗口消息点击了【IDNO】按钮 
			//HWND h = ::GetDlgItem((HWND)hWnd, IDNO);
			//if (h)
			//{
			//	TRACE("找到了IDNO控件窗口\n");
			//	::PostMessage((HWND)hWnd, WM_COMMAND, MAKEWPARAM(IDNO, BN_CLICKED), (LPARAM)h);
			//}

			// way4:模拟鼠标移到了【IDNO】按钮上点击  
			//HWND h = ::GetDlgItem((HWND)hWnd, IDNO);
			//if (h)
			//{
			//	TRACE("找到了IDNO控件窗口\n");
			//	POINT pt;
			//	CRect rc;
			//	::GetWindowRect(h, &rc);
			//	pt.x = rc.left + 10;
			//	pt.y = rc.top + 10;
			//	SetCursorPos(pt.x, pt.y);//模拟鼠标移到了【IDNO】按钮上  
			//	//完成点击  
			//	mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0);
			//	mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0);
			//}
 
			//way5:模拟键盘回车关闭对话框
			//keybd_event(VK_RETURN, 0, 0, 0);
			//keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
		}
	}
	CDialog::OnTimer(nIDEvent);
}
发布了84 篇原创文章 · 获赞 63 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/wsq119/article/details/103421733