mfc控件消息,已經是封裝好的東西了,消息類型分爲多種,有WM開頭的windows消息,還有自己通過添加的ON_COMMAND消息等等; 添加消息,如果是WM消息,就實現相應的虛函數,若是ON_COMMAND消息就建立相應的消息映射
菜單消息,工具欄消息都是命令消息,mfc中命令消息的處理流程如下:
(下面的每個類中都可以定義相關的消息和消息處理函數,而處理過程就是箭頭所指過程。mfc程序是按此順序處理命令消息的)
1.單文檔程序: view-->doc-->MainFrame-->app
2.多文檔程序:
文檔沒有打開:MainFrame-->app
文檔打開:view-->doc-->childFrame->app-->MainFrame
在CEditView的子類中重載虛函數onDraw並進行繪圖操作,但是運行後沒起作用的原因。
onDraw中設置斷點,運行後發現並沒有進入斷點。原因如下:WM_PAINT消息導致調用相關的onpaint消息響應函數,如果是從CView類中派生的類,其調用CView::OnPaint(){
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}
但是對於從CEditView類中繼承的類來說,由於CEditView繼承自CCtrlView,而CCtrlView的OnPaint實現如下:CCtrlView::OnPaint(){
//this is done to avoid CView :: OnPaint
Default();
}可見其並沒有調用OnDraw虛函數。
因此想在CEditView的派生類中繪圖,需要重載OnPaint函數!