MFC—CTabCtrl 、CListCtrl

2023-11-30 20:36
文章标签 mfc clistctrl ctabctrl

本文主要是介绍MFC—CTabCtrl 、CListCtrl,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为了方便自己查找

1、官方文档

CTabCtrl

CListCtrl

2、create(窗口样式)

 基本上安流程来都能出出来。看一下视图的窗口样式。主要是report的。

CTabCtrl选项卡控件样式

CListCtrl列表视图窗口样式(这里的名字又变了,List-View窗口样式)

CListCtrl扩展视图列表样式(这里的名字变了,扩展List-View样式)

说真的,这些名字起得真花。

3、创建带复选框的

如果是要带复选框,需要先创建,再用SetExtendedStyle附带扩展样式。

4、CListCtrl 项操作

list-View项状态

自己进入一个误区,LVN_ITEMCHANGED的消息响应函数,项状态太多,不好处理。需要拆开。

(1)单击

单机选中,再次单击取消选中,复选框进行勾选 参考代码

void CrvtFaultRodDlg::OnNMClickListrod(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO:  在此添加控件通知处理程序代码CheckPtrDet(pNMItemActivate);if (pNMItemActivate->iItem == -1)    return;bool bCheck = mList.GetCheck(pNMItemActivate->iItem);mList.SetCheck(pNMItemActivate->iItem, !bCheck);mList.SetItemState(pNMItemActivate->iItem, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);HightRod(pNMItemActivate->iItem);*pResult = 0;
}

(2)单击复选框不生效

ListView_SetCheckState 要用这个,网上完全没有示例,含义私信我WX

void CrvtFaultRodDlg::OnNMClickListrod(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO:  在此添加控件通知处理程序代码CheckPtrDet(pNMItemActivate);if (pNMItemActivate->iItem == -1)    return;UINT nFlag;int nItem = mList.HitTest(pNMItemActivate->ptAction, &nFlag);//判断是否点在checkbox上  if (nFlag == LVHT_ONITEMSTATEICON){BOOL fCheck = mList.GetCheck(pNMItemActivate->iItem) ? FALSE : TRUE;ListView_SetCheckState(mList.m_hWnd, TVIS_OVERLAYMASK, fCheck);UINT staMsk = fCheck ? LVIS_FOCUSED | LVIS_SELECTED : LVIS_FOCUSED;mList.SetItemState(pNMItemActivate->iItem, staMsk, staMsk);}else{bool bCheck = !mList.GetCheck(pNMItemActivate->iItem);mList.SetCheck(pNMItemActivate->iItem, bCheck);UINT staMsk = bCheck ? LVIS_FOCUSED | LVIS_SELECTED : LVIS_FOCUSED;mList.SetItemState(pNMItemActivate->iItem, staMsk, staMsk);}HightRod(pNMItemActivate->iItem);*pResult = 0;
}

这篇关于MFC—CTabCtrl 、CListCtrl的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/438458

相关文章

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

控制台和MFC中内存泄露工具vld的使用

最近想检测下项目中内存泄露的情况,选中了vld这款。在查找使用方法的时候,大都是控制台下的示例,添加到main函数所在的源文件上。换成MFC就纠结了,不知道添加到哪里去。本文记录控制台和MFC中的使用vld过程。    vld资源:    1)、大家可以移步下边的网址下载:     http://vld.codeplex.com/releases/view/82311    2

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

PNG透明背景按钮的实现(MFC)

问题描述: 当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png" 开发环境为VS2010。 解决办法: 使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

几种MFC对话框的隐藏方法

修改CXXAPP中的InitInstance函数,将原来的模态对话框改为非模态对话框,及修改 [cpp]  view plain copy INT_PTR nResponse = dlg.DoModal();     为 [cpp]  view plain copy dlg.Create(CModalHideDlg::IDD);

MFC首先要知道的--程序执行顺序

MFC的程序执行顺序 很多刚学MFC的人都会被MFC给弄的晕头转向。以前传统的C语言中的main()不见了,window sdk api 中的WinMain()函数也不见了,到底用MFC编写的程序是如何开始运行的呢?到底MFC有没有遵从最基本的C++的标准呢?到底MFC的代码运行的顺序又是怎么样的呢?那么多个文件,那么多函数,到底哪一个先运行,哪一个后运行,哪一个调用哪一个,哪一个又被哪一个调用

#error: Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version

昨天编译文件时出现了Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~的错误。   在网上很容易找到了解决的方案,公布如下:   对着你的项目点击右键,依次选择:属性、配置属性、常规,然后右边有个“项目默认值”,下面有个MFC的使用,选择“在共享 DLL 中使

控制台、win32 、mfc 、QT区别

控制台程序主要用于早期dos(disk operate system)编程。win32 在windows95系统以前,c++还未流行起来,面向c语言(面向过程)的窗口编程,c语言直接使用API进行开发,大多数API都需带入windows句柄作为参数。mfc基于win32添加了c++特性,基于面向对象编程,实际是对windows 大多API的封装库,但内容复杂混乱。包涵一个应用程序的框架,为减少

MFC单文档去掉默认的菜单、工具栏和状态栏

 1,去掉工具栏和状态栏, 在  int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)   中注销掉相关的工具栏和状态栏语句,即可。 2,去掉菜单, 在 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 中,增加语句 cs.hMenu = NULL;//即 菜单句柄赋