搞了个wince的测试程序,里面用到CListCtrl控件,在响应其单击某一行的事件的时候,老是出问题。开始使用OnLvnItemchanged响应点击事件,发现一个问题。第一次点击某一行,可以正常响应对应的处理;处理完后,回来再点击同样一行就进不了处理了。哥们那个郁闷呀!后来才发现使用OnNMClick事件处理,其中的处理如下就正常了。
void CD3GMessageDlg::OnNMClickListMain(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
POSITION pos = m_List.GetFirstSelectedItemPosition();
if(pos == NULL) return;
int item = m_List.GetNextSelectedItem(pos);
switch(item)
{
case 0:{ // 新建消息
//MessageBox(L"新建消息");
CRWMessage *pDlg = new CRWMessage(0, this, -1, -1);
INT_PTR n = pDlg->DoModal();
switch(n)
{
case IDOK:{
free(pDlg);
}break;
}
}break;
case 1:{ // 收件箱
//MessageBox(L"收件箱");
CMessageBox *pDlg = new CMessageBox(0, this, -1);
INT_PTR n = pDlg->DoModal();
switch(n)
{
case IDOK:{
free(pDlg);
}break;
}
}break;
case 2:{ // 待发件箱
//MessageBox(L"待发件箱");
CMessageBox *pDlg = new CMessageBox(0, this, 1);
INT_PTR n = pDlg->DoModal();
switch(n)
{
case IDOK:{
free(pDlg);
}break;
}
}break;
case 3:{ // 已发件箱
//MessageBox(L"已发件箱");
CMessageBox *pDlg = new CMessageBox(0, this, 2);
INT_PTR n = pDlg->DoModal();
switch(n)
{
case IDOK:{
free(pDlg);
}break;
}
}break;
case 4:{ // 信息设置
//MessageBox(L"信息设置");
CSetMessage *pDlg = new CSetMessage(0, this);
INT_PTR n = pDlg->DoModal();
switch(n)
{
case IDOK:{
free(pDlg);
}break;
}
}break;
case 5:{ // 存储状态
//MessageBox(L"存储状态");
CStorageState *pDlg = new CStorageState(0, this);
INT_PTR n = pDlg->DoModal();
switch(n)
{
case IDOK:{
free(pDlg);
}break;
}
}break;
case 6:{ // 关于
CString about;
about = L"App Name\t: D3GMessage\r\n";
about += L"Version\t: 1.0\r\n";
about += L"Author\t\t: brantyou\r\n";
MessageBox(about);
}break;
case 7:{ // 退出
CDialog::OnOK();
}break;
default:break;
}
*pResult = 0;
}
特发此贴记录一下。。。
分享到:
相关推荐
CListCtrl的主要事件及鼠标响应函数,CListCtrl的主要事件及鼠标响应函数
关于clistctrl的用法,以及其中的点击表头实现排序的功能,以及获取鼠标点击的位置
MFC的CListCtrl空间默认不能编辑。但可通过在特定地方显示编辑框,并读写编辑框的内容来间接实现CListCtrl的可编辑功能。
可编辑子项的CListCtrl类,非常强大,我已经在工程中使用
代码包括一个CListCtrl继承类,为CListCtrl上的每一项添加CCheckBox,并重载WM_LBUTTONDOWN消息,将鼠标定位到每项的CheckBox上面,响应打击消息.
实现了clistctrl 的单击 标题栏的 排序功能.mfc版本是vs2010
可以实现CListCtrl第一次点击高亮,第二次点击可编辑。。。有详细的代码功能介绍,适合研究!
可以改变单行高度,单个SubItem颜色,字体颜色等等的CListCtrl,初步实现了滚动条,响应点击消息~~
本实例展示了CListCtrl虚模式显示大量数据的情况,并可根据点击列进行排序
CListCtrl 控件生成之后,无论你单击还是双击它的单元格,都没有任何反应。如果我们需要像EXCEL那样双击一个单元格后即可编辑该单元格的内容,那 怎么办呢?一个方法就是双击单元格之后,在该单元格的地方生成一个...
本例是一个管理系统的例子,用了很多CListCtrl控件的用法!还包括连接Access数据库,将数据信息显示在CListCtrl控件中!可以点击编辑CListCtrl控件信息!
本文简单介绍下VC列表控件的点击事件。博客地址:http://blog.csdn.net/bingdianlanxin,有问题欢迎留言!
重写的CListCtrl类,能改变行的颜色,能点击列标题后实现自动排序。同时包含VC2010下,CString转为Char*的技巧。类在VC6.0和VC2010下均编译通过。
原有的代码不需要任何改变即可加入,可以轻易做出多种风格的CListCtrl,包括可编辑的表格,类似COMBOX的下拉列表,带图标的,更改背景颜色和前景颜色等,甚至有日期选项框,而且可以单独控制每一列,点击列头自动...
功能有 多选,高亮重绘,滚动条重绘,表头重绘 并且可以点击,list背景重绘,32位栓缓存 等等 里面有些 注释 有的时原来的 有的时后加的 有的我也是拿来用用 不过有不懂可以一起研究下 如有改进 请给我发下 谢谢...
VC++.NET Clistctrl重绘,可定义内容行颜色 以及鼠标点击各个状态的颜色,并实现了隔行变色,与最初默认的Clistctrl相比,漂亮了许多,也更加清淅了,用来显示列表数据更直观了。内含一个位图皮肤控件,用来实现一个...
该类是我在网上找的一个clistctrl的扩展类,但是不能排序,所以我添加了个功能单击列头字段进行排序,并且画排序图标!资源内有代码样例!
开发环境:VS2013 框架:MFC、vc++ 功能:点击列表头排序、隔行换色、高亮显示选中、多行选中
1. 自定义CMyListView,继承自CListView, 实现点击表头进行该列排序以及固定某些列宽的功能。使用时直接继承此View即可。 2. 自定义CMyListCtrl, 继承自CMFCListCtrl, 同样实现上述功能,用于listctrl控件。使用...
可实现像EXCEL一样的固定区域(拉动时不受影响),表示可分隔和合并成几个或一个过滤栏(制图的表格样式),可单独设置每个单元格的颜色,可动态创建各种控件,可设置单击时的选中行的各种样式.....