但有時候其實多個消息要做的事情,都會對到同一個對象,只是做的動作不同,
例如對同一個表單做新增、刪除、修改、查詢這樣的狀況,
這時候就可以用 ON_COMMAND_RANGE囉~
舊做法:
ON_COMMAND(ID_TREEITEM_ADD, &CMyDialog::OnTreeItemAdd)
ON_COMMAND(ID_TREEITEM_DEL, &CMyDialog::OnTreeItemDel)
ON_COMMAND(ID_TREEITEM_MODIFY, &CMyDialog::OnTreeItemModify)
void CMyDialog::OnTreeItemAdd()
{
m_tree.add(hItem);
}
void CMyDialog::OnTreeItemDel()
{
m_tree.delete(hItem);
}
void CMyDialog::OnTreeItemModify()
{
m_tree.Modify(hItem);
}
改為:
ON_COMMAND_RANGE(ID_TREEITEM_ADD,ID_TREEITEM_MODIFY, &CMyDialog::OnTreeItem)
//此作法需注意:ID_TREEITEM_ADD、ID_TREEITEM_DEL、ID_TREEITEM_MODIFY在resource.h中必須為連續數,如1、2、3。
void CMyDialog::OnTreeItem(UINT nID)
{
switch(nID)
{
case ID_TREEITEM_ADD:
m_tree.add(hItem);
break;
case ID_TREEITEM_DEL:
m_tree.del(hItem);
break;
case ID_TREEITEM_MODIFY:
m_tree.Modify(hItem);
break;
default:
break;
}
}
//m_tree的add del modify只是示意,並非真的有此member function,詳見msdn CTreeCtrl
本篇參考:msdn ON_MESSAGE_RANGE
沒有留言:
張貼留言