看了一天孫鑫老師的視頻教程,發現其實在VC++中利用MFC進行編程也可以攔截訊息,通過建立訊息
映射來處理訊息。
嘿嘿,根據老師講的內容,自己測試了書中的代碼。
發現XP和2000對處理客戶區的範圍不一樣。
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call default//////////////* 用全域函數實現畫線功能*//*HDC hdc;hdc=::GetDC(this->m_hWnd),::MoveToEx(hdc,m_point.x,m_point.y,NULL);::LineTo(hdc,point.x,point.y);::ReleaseDC(m_hWnd,hdc);*/////////////* 利用CDC類實現畫線功能*//* CDC *pdc=GetDC(); pdc->MoveTo(m_point); pdc->LineTo(point); ReleaseDC(pdc);*//////////////* 利用CClientDC類實現畫線功能*//* CClientDC dc(this);dc.MoveTo(m_point.x,m_point.y);dc.LineTo(point);*//* CClientDC dc(GetParent());dc.MoveTo(m_point);dc.LineTo(point);*///////////////////* 利用CwindowDC類畫線*//*CWindowDC dc(this);dc.MoveTo(m_point);dc.LineTo(point);*//*CWindowDC dc(GetDesktopWindow());dc.MoveTo(m_point);dc.LineTo(point);dc.TextOut(100,100,"Volcanol",strlen("Volcanol"));*///////////////////* 繪製彩色的線條*///利用CPen類進行彩色繪圖/*CPen pen(PS_SOLID,5,RGB(255,43,123));CClientDC dc(this);CPen *oldpen=dc.SelectObject(&pen);dc.MoveTo(m_point);dc.LineTo(point);dc.SelectObject(&oldpen);*////////////////* 利用畫刷繪圖*//*CBrush brush(RGB(100,23,255)); //建立畫刷 CClientDC dc(this); //擷取用戶端區域的裝置內容dc.FillRect(CRect(m_point,point),&brush); //填充地區*/ ///////////////////* 利用位元影像畫刷繪圖*//*CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP1); CBrush brush(&bitmap);CClientDC dc(this); //擷取用戶端區域的裝置內容dc.FillRect(CRect(m_point,point),&brush); //填充地區*/
如果對MFC和winapi 都很熟悉那麼使用VC開發一個應用程式還是挺快捷的,
利用MFC建立介面,而利用winapi實現負責應用。
其實可以通過自己封裝來實現一個程式架構的。