BCG控件---Grid消息响应函数

来源:互联网 发布:有什么看禁播动漫软件 编辑:程序博客网 时间:2024/06/08 10:19
代码中所使用的Grid控件是:class CGridCtrlBCG : public CBCGPGridCtrl{...}CGridCtrlBCG m_wndSrvLayer;该控件中BCGPGN_SELCHANGED BCGPGN_SELCHANGING都会发送两次消息,两次消息的不同地方可以根据a处提到参数区分,第一次值是0,第二次是1控件第一次打开后,做selchanged操作时只发送一次消息并且pNMGrid->lParam值为1,所以只需要处理LParam为1 的消息即可。void CSdhAddServiceLayerDlg::OnSelChangedGrid(NMHDR *pNotifyStruct, LRESULT *pResult){BCGPGRID_NOTIFICATION *pNMGrid = reinterpret_cast<BCGPGRID_NOTIFICATION *>(pNotifyStruct);if (NULL != pNMGrid){int iCurCol = pNMGrid->nCol;if (0 == pNMGrid->lParam || colSel == iCurCol)                      ---------a处{//*pResult = 0;return;}int iCurRow = pNMGrid->nRow;BOOL bCheckStatus = FALSE;CBCGPGridRow *pRow = m_wndSrvLayer.GetRow(iCurRow);if (NULL != pRow){CBCGPGridItem *pCheckItem = pRow->GetItem(colSel);if (NULL != pCheckItem){bCheckStatus = (bool)pCheckItem->GetValue();}pCheckItem->SetValue(_variant_t(!bCheckStatus));}}*pResult = 0;}

BCGPGN_SELCHANGED会发两次 ,切忌。

之前为了解决这样的问题,改用了ON_CLICK或者WM_LBUTTONDOWN都没有效果,原因是该Grid是嵌入到Dialog窗口的,所以暂时不响应Grid的消息哦。

原创粉丝点击