1.1.7-學習Opencv與MFC混合編程之---為畫圖工具添加工具欄
源代碼:http://download.csdn.net/detail/nuptboyzhb/3961701
哎,其實里面有很多圖片的,本來看起開很明了的,資源連接里有詳細的文檔,比下面的看的舒服的多....
Ø 首先認識一下工具欄的操作。
1. 打開資源->Toolbar
2. 如何查看每個圖標的屬性?
查看每個圖標屬性,不是按右鍵,而是左鍵雙擊圖片,即可看到,如:
我們雙擊打開圖標,得到如下屬性框:
從上圖我們可以知道‘打開’圖標的資源ID是:ID_FILE_NEW;這個ID號恰好和菜單項中的‘文件’->‘打開’菜單項具有相同的資源ID。
因此,當我們按工具欄的‘打開’圖標時,能夠執行和按菜單項相同的功能。
3. 如何為工具欄上的圖標之間添加一個分隔符?
只需要用鼠標拖動即可。將一個圖標拖到遠一點的地方即可。
4. 如何刪去一個圖標?
用鼠標拖動,拖到離開工具欄即可
Ø 為項目的畫圖工具添加工具欄。
1. 編輯工具欄資源,分別為每一個工具畫一個圖標,雙擊圖標,設置圖標的屬性,使其資源ID號,與菜單項中各個工具菜單的資源ID相對應。編輯運行即可。
2. 結束啦!
Ø 新建自己的工具欄
1. 插入,資源,選擇Toolbar,點擊新建按鈕。將資源按鈕設置為:IDR_MY_TOOLBAR
2. 編輯幾個圖標資源,如下圖:
并設置相應的屬性。將其與畫圖工具的菜單項的資源ID設為對應一致。
3. 在CMainFrame類增加成員變量:CToolBar m_myToolBar;并在CMainFrame類的OnCreate(LPCREATESTRUCT lpCreateStruct)函數里添加如下代碼:
if(!m_myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT
|CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_myToolBar.LoadToolBar(IDR_MY_TOOLBAR))
{
TRACE0("Failedto create toolbar\n");
return-1; // fail to create
}
m_myToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_myToolBar);
4. 編輯運行即可。
在增加成員變量CToolBar m_myToolBar;后出現運行錯誤,錯誤提示是一些內存不可讀錯誤。此時,將Release文件下的所有文件刪除即可。
Ø 完善功能:為工具欄的顯示與否,添加查看菜單項;
1. 添加‘查看’菜單項,設置為彈出類型。
2. 在‘查看’菜單項下添加‘系統工具欄’和‘畫圖工具欄’菜單項。分別設置相應的屬性,并建立類向導;(注意):建立類向導的時候,選擇添加到CMainFrame類。在分別在其消息相應函數中加入如下命令:
void CMainFrame::OnViewSystemBar()
{
//TODO: Add your command handler code here
ShowControlBar(&m_wndToolBar,!m_wndToolBar.IsWindowVisible(),FALSE);
}
void CMainFrame::OnViewDrawBar()
{
//TODO: Add your command handler code here
ShowControlBar(&m_myToolBar,!m_myToolBar.IsWindowVisible(),FALSE);
}
3. 以上基本完成了菜單項的功能,一下我們為菜單項的選擇添加‘對號’標記。
為‘系統工具欄’和‘畫圖工具欄’菜單項添加UPDATA_COMMAND_UI消息處理函數。點擊右鍵,建立類向導,
選擇UPDATA_COMMAND_UI.類名選擇CMainFrame.增加函數,編輯代碼:
voidCMainFrame::OnUpdateViewSystemBar(CCmdUI* pCmdUI)
{
// TODO:Add your command update UI handler code here
pCmdUI->SetCheck(m_wndToolBar.IsWindowVisible());
}
void CMainFrame::OnUpdateViewDrawBar(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_myToolBar.IsWindowVisible());
}
Ø 為畫圖工具的各個菜單項添加復選提示;
分別點擊右鍵,建立類向導,選擇UPDATA_COMMAND_UI.類名選擇CXXXXView.增加函數,編輯代碼:
void CCVMFCView::OnUpdateMyDrawLine(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==1);
}
voidCCVMFCView::OnUpdateMyDrawRectangle(CCmdUI* pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==2);
}
void CCVMFCView::OnUpdateMyDrawCircle(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==3);
}
voidCCVMFCView::OnUpdateMyDrawConceal(CCmdUI* pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==0);
}
void CCVMFCView::OnUpdateMyDrawCurve(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==4);
}
voidCCVMFCView::OnUpdateMyDrawEllipse(CCmdUI* pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==5);
}
void CCVMFCView::OnUpdateMyDrawText(CCmdUI*pCmdUI)
{
//TODO: Add your command update UI handler code here
pCmdUI->SetCheck(my_draw_flag==6);
}
Ø 為各個工具菜單添加{提示}功能。即:當鼠標移動到菜單項上的時候,程序左下角會提示該菜單項的功能。
方法1:設置菜單項的屬性,在屬性中的最后一欄,提示欄中輸入相應的提示語即可。
方法2:直接打開資源文件:XXXX.rc,用記事本打開;
添加如下代碼:
在BEGIN 和END之間添加菜單項的ID號和對應的字符串即可:
如:
STRINGTABLE DISCARDABLE
BEGIN
ID_MY_DRAW_LINE "畫一條直線(拖動鼠標)"
ID_MY_DRAW_CONCEAL "取消工具"
ID_MY_DRAW_RECTANGLE "畫矩形(拖動鼠標)"
ID_MY_DRAW_CIRCLE "畫圓(拖動鼠標)"
ID_MY_DRAW_ELLIPSE "畫橢圓(拖動鼠標)"
ID_MY_DRAW_TEXT "寫文字(拖動鼠標)"
ID_MY_DRAW_CURVE "畫任意曲線(拖動鼠標)"
END
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成