Vs2010 MFC 简单制作过程中的问题
以前做過一段時間MFC,都忘得差不多了,最近又做了一個小界面。發現與vs2005中MFC有許多不同之處。
vs2010的Dialog基類默認選擇的是“CDialogEx”。
1. 定時器不跳入OnTimer(UINT_PTR nIDEvent)處理函數的問題:
如果調用CWnd::SetTimer函數時最后一個參數為NULL,則通過WM_TIMER的消息處理函數來處理定時事件。
需要在BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP()直接添加:ON_WM_TIMER(),但是手動添加往往會報錯,static_cast的錯誤。
注意使用類向導來添加,當自己添加的afx_msg 響應不對時,往往類型不對。
添加WM_TIMER消息的處理函數的方法是,在VS2010工程的Class View類視圖中找到要添加定時器的類,點擊右鍵,選擇Properties,顯示其屬性頁,然后在屬性頁工具欄上點擊Messages按鈕,下面列表就列出了所有消息,找到WM_TIMER消息,添加消息處理函數。
?
2.CComboBoxEx 的使用與 原來的CComboBox不同
添加項時,注意不能直接AddString,只能用InsertItem()來添加COMBOBOXEXITEM類型的。具體看msdnhttp://msdn.microsoft.com/zh-cn/library/cb8f2x66.aspx。下面只給出簡單的添加文本的示例:
?? COMBOBOXEXITEM?? Item;
?? Item.mask?? =?? CBEIF_TEXT?? ;
?? Item.pszText?? =?? _T("Text Sample");
?? Item.iItem?? =?? 0;//index
?? m_comboboxex.InsertItem(&Item);
3.OpenCV 與 Picture控件顯示圖片的問題
要把opencv的窗口嵌入mfc框架
///@brief 將使用OpenCV生成的窗口嵌入MFC框架 ///詳細說明 ///@param[in] pWnd - MFC中顯示圖片控件的句柄 /// csWndName - OpenCV中生成窗口的名稱 用于獲取句柄 /// nTarWidth - 目標窗口的寬度 /// nTarHeight - 目標窗口的長度 ///@pre NULL ///@return NULL ///@retval NULL ///@post NULL void DisplayFrame::SetOpenCVWindow(CWnd *pWnd,CString csWndName, int nTarWidth,int nTarHeight) {char *pWndName = csWndName.GetBuffer();cvNamedWindow(pWndName, 0);HWND hWnd = (HWND)cvGetWindowHandle(pWndName);//顯示控件HWND hParent = ::GetParent(hWnd);//父窗口::SetParent(hWnd,pWnd->m_hWnd);::ShowWindow(hParent,SW_HIDE);//隱藏顯示窗口控件pWnd->SetWindowPos(NULL, 0, 0, nTarWidth, nTarHeight, SWP_NOMOVE | SWP_NOZORDER);cvResizeWindow(pWndName, nTarWidth, nTarHeight);} ///@brief 使用OpenCV中的函數對單張圖片進行顯示 ///詳細說明 ///@param[in] csWndName - 目標顯示窗口的名稱,需使用OpenCV的中創建時的名稱 /// pImg - 待顯示圖片的指針 ///@pre NULL ///@return NULL ///@retval NULL ///@post NULL void DisplayFrame::ShowPicture(CString csWndName,IplImage *pImg) {char *pWndName = csWndName.GetBuffer();cvShowImage(pWndName, pImg); }4.控件的美化問題
之前用的CDialog,要美化界面,需要ps一些位圖,設置大小重繪之類的。以為現在的CDialogEx可以直接設置多個樣式,查找許久資料后發現,只不過可以設置背景顏色和圖片,其他的沒什么,要美化界面還是需要之前的操作。
SetBackgroundColor(RGB(0x79,0xcd,0xcd));
SetBackgroundImage()
?
總結
以上是生活随笔為你收集整理的Vs2010 MFC 简单制作过程中的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv KNN 模型不能保存的问题
- 下一篇: VS2010 MFC exe独立系统环境