天天看點

MFC電腦地震

MFC電腦地震設計報告

目錄

​​第一章  項目描述 2​​

​​1.1功能描述 2​​

​​1.2所需技術 2​​

​​第二章  總體設計 2​​

​​2.1程式運作流程圖 2​​

​​第三章  詳細設計 2​​

​​3.1使目前前台視窗震動 2​​

​​3.2屏蔽任務管理器 3​​

​​3.3屏蔽ESC 3​​

​​第四章 運作結果 3​​

第一章  項目描述

1.1功能描述

實作滑鼠點選的任意一個前台視窗,并且使它震動起來,實作電腦地震的效果。并且屏蔽掉任務管理器,和關閉按鈕,通過輸入密碼123來關閉此程式。

1.2所需技術

擷取目前視窗句柄,屏蔽能使程式關閉的消息

第二章  總體設計

2.1程式運作流程圖

MFC電腦地震

3.1使目前前台視窗震動

以下是擷取前台視窗的句柄和大小的程式清單。

m_hWnd = ::GetForegroundWindow();//獲得目前前台視窗的句柄
  ::GetWindowRect(m_hWnd,&m_Rect); //獲得前台視窗的大小      

得到視窗句柄後使用::SetWindowPos函數使視窗改變位置,這裡值得注意的是要加::為全局作用域符,使得MFC能夠使用API函數,而不是本類中的成員函數。

3.2屏蔽任務管理器 

以下是當出現對應标題的對話框時,發送關閉的消息。主要是屏蔽任務管理器等對話框。

m_hWndClosed=FindWindowEx(NULL,NULL,NULL,"任務管理器");     //屏蔽任務管理器 登出 關閉Windows 
  if (m_hWndClosed!=NULL)
  {
    ::SendMessage(m_hWndClosed, WM_CLOSE, 0, 0);
  }      

3.3屏蔽ESC

使用重寫虛函數PreTranslateMessage實作屏蔽ESC鍵盤消息的過濾,防止按下ESC對話框關閉。如下程式清單所示。

BOOL CEarthQuakeDlg::PreTranslateMessage(MSG* pMsg) 
{
  // TODO: Add your specialized code here and/or call the base class
  if(WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)//這裡是用來過濾鍵盤消息的,鍵盤消息就之間的八種
  { //當時按鍵消息
    if( pMsg->wParam ==  VK_ESCAPE)
    {
      return TRUE;
    }
  }
  return CDialog::PreTranslateMessage(pMsg);
}      

第四章  運作結果

MFC電腦地震

繼續閱讀