VS2008, MFC 編程 對話框 筆記5 - 逃跑按鈕的實現(鼠標指到某按鈕,則按鈕消失)

原理:當鼠標指到 escape 按鍵,則當前escape消失 另外一個顯示。

1. 新增加一個類 基類爲CButton,右鍵工程,

2. 控件關聯成員變量 成員變量放到工程Dlg類中,成員變量類型爲步驟1 中創建的類CDyBtn。

3. 給新增加的類CDyBtn 增加windows消息WM_MOUSEMOVE響應的函數OnMouseMove:(因爲是button類 所以只有到鼠標移動到button上才響應WM_MOUSEMOVE)

4. 在工程Dlg 的OnInitDialog中實現 兩個按鈕的指針交換。(查看函數最後 TODO::部分內容和註釋)

BOOL Cvs2008_SX_jiaocheng08Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 將“關於...”菜單項添加到系統菜單中。

	// IDM_ABOUTBOX 必須在系統命令範圍內。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
	//  執行此操作
	SetIcon(m_hIcon, TRUE);			// 設置大圖標
	SetIcon(m_hIcon, FALSE);		// 設置小圖標

	// TODO: 在此添加額外的初始化代碼
	//表示在對話框即將顯示時被調用。
	//交換兩個控件的成員變量
	m_btn1.m_pBtn = &m_btn2;//m_pBtn 爲類型爲CDyBtn* 類型的成員 變量
	m_btn2.m_pBtn = &m_btn1;

	return TRUE;  // 除非將焦點設置到控件,否則返回 TRUE
}

5. 在CDyBtn類成員函數OnMouseMove中添加代碼

void CDyBtn::OnMouseMove(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息處理程序代碼和/或調用默認值

	ShowWindow(SW_HIDE);
	m_pBtn->ShowWindow(SW_SHOW);//顯示當前直到的button
	
	CButton::OnMouseMove(nFlags, point);
}

 

6. 爲了剛開始顯示一個按鈕,把button1設置爲不可見

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章