我正在使用SDI MFC应用程序。我在大型机中创建了一个dockpane对话框。我的视图类派生自 CListView 。每当用户点击大型机中的Listview时,我想在对话框中显示所选的行数据。任何人都可以告诉我如何实现这一点,以及如何将消息从大型机发布到对话框。
答案 0 :(得分:0)
您可以调用方法更新控制栏窗口中的数据,直接从视图中的选择更改处理程序更新所选项目的详细信息,如下所示:
void CMyListView::OnItemChanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// Did the item state change?
if (pNMListView->uChanged & LVIF_STATE)
{
// Did the item selection change?
const bool oldSelState = (pNMListView->uOldState & LVIS_SELECTED) != 0x0;
const bool newSelState = (pNMListView->uNewState & LVIS_SELECTED) != 0x0;
const bool selStateChanged = oldSelState != newSelState;
if(selStateChanged)
{
// selection has changed
CMainFrame* pMainWnd = (CMainFrame*)AfxGetMainWnd();
CItemDetailsWnd* pDetailsWnd = pMainWnd->GetDetailsDialogBar();
CItemData* pItemData = (CItemData*)GetListCtrl().GetItemData(pNMListView->iItem);
pDetailsWnd->PopulateDetails(pItemData);
}
}
*pResult = 0;
}
在此示例中,CItemData
是单个CListView
项/行的数据持有者。
CItemDetailsWnd
是您的对话框控制栏,用于显示当前所选项目的详细信息。