BOOL CEnhancedListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: Add your specialized code here and/or call the base class
// wParam is zero for Header ctrl
LPNMHDR pNH = (LPNMHDR) lParam;
if( wParam == 0 && pNH->code == NM_RCLICK )
{
// Right button was clicked on header
CHeaderCtrl* pHeader = CListCtrl::GetHeaderCtrl();
if(pHeader){
CPoint pt(GetMessagePos());
CPoint posMouse=pt;
pHeader->ScreenToClient(&pt);
// Determine the column index
int index=-1;
CRect rcCol;
for( int i=0; pHeader->GetItemRect(i, &rcCol); i++ )
{
if( rcCol.PtInRect( pt ) )
{
index = i;
break;
}
}
*pResult=TRUE;
OnHeaderRClick(posMouse,i);
return TRUE;
}
}
return CListCtrl::OnNotify(wParam, lParam, pResult);
}
{
// TODO: Add your specialized code here and/or call the base class
// wParam is zero for Header ctrl
LPNMHDR pNH = (LPNMHDR) lParam;
if( wParam == 0 && pNH->code == NM_RCLICK )
{
// Right button was clicked on header
CHeaderCtrl* pHeader = CListCtrl::GetHeaderCtrl();
if(pHeader){
CPoint pt(GetMessagePos());
CPoint posMouse=pt;
pHeader->ScreenToClient(&pt);
// Determine the column index
int index=-1;
CRect rcCol;
for( int i=0; pHeader->GetItemRect(i, &rcCol); i++ )
{
if( rcCol.PtInRect( pt ) )
{
index = i;
break;
}
}
*pResult=TRUE;
OnHeaderRClick(posMouse,i);
return TRUE;
}
}
return CListCtrl::OnNotify(wParam, lParam, pResult);
}
解决方案 »
- VS2005 编译器如何添加消息的呀??
- MFC 内存泄露的奇怪问题
- 简单问题:string 不是std 的成员 ?
- wav api录音程序的链接错误,在线等待。谢谢。
- 关于图片打印的问题
- 关于分割窗体 的 分割栏
- 关于GetWindowLong函数的简单问题!
- CORBA,DCOM,EJD分别是什么?他们各有什么功能和特点?他们之间有什么区别?
- MFC UDP协议服务器接收数据乱码问题?
- 怎么为VS2010下的MFC项目集成bochs-2.6??
- dll应用中 为什么老是报错INK : fatal error LNK1104: cannot open file "***.lib"
- 字符串格式化问题?
void CHistoryList::OnItemchangedHistoryList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CButton* m_btnDel=(CButton*)GetDlgItem(IDC_DELETE);
int nSelected=pNMListView->iItem;
int nSubItem=pNMListView->iSubItem;
if (nSelected>=0)
{
TRACE("选择了第%d条记录\n",nSelected);
m_btnDel->EnableWindow(true);
}
else
{
m_btnDel->EnableWindow(false);
}
*pResult = 0;
}
兄弟是不是抄的编程高手上的啊。好熟悉的代码啊,呵呵,我等一下试试,现在已经下班了。下周一下班前一定节帖!:qiuanhong(练从难处练,用从易处用) (
我是按下标题,不是按客户区,这个消息应该对我没有用,:)
POSITION pos;
pos = list.GetFirstSelectedItemPosition();
if (pos == NULL)
{
MESSAGEBOX("没有选择行!")
}
else{
nItem = list.GetNextSelectedItem(pos);//nItem为所选择的
记录号}
这个我试过了。得到的POS都是NULL
多谢UP
似乎也没有用:(,完了。搞之不定了...........
BEGIN_MESSAGE_MAP(CTestView, CListView)
//{{AFX_MSG_MAP(CTestView)
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnClick)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CTestView::OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
NMLISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
首先要弄出这个函数,OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult),
然后设你要的值为index,则
NM_LISTVIEW * pNMListView = (NM_LISTVIEW *)pNMHDR;
index = pNMListView->iSubItem;