`
hcmfys
  • 浏览: 356387 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

学习1

 
阅读更多

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

该函数获得有关指定窗口的信息,
函数也获得在额外窗口内存中指定偏移地址的 32 位长整型值。
LONG GetWindowLong(HWND hWnd,int nindex);
hwnd:
窗口句柄及间接给出的窗口所属的窗口类。

函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的 32 位度整型值。

函数原型: LONG GetWindowLong HWND hWnd int nlndex );

参数:

hWnd:
窗口句柄及间接给出的窗口所属的窗口类。

nlndex
:指定要获得值的大于等于 0 的值的偏移量。有效值的范围从 0 到额外窗口内存空间的字节数一 4 例如,若指定了 12 位或多于 12 位的额外类存储空间,则应设为第三个 32 位整数的索引位 8 。要获得任意其他值,指定下列值之一:

GWL_EXSTYLE
;获得扩展窗日风格。

GWL_STYLE
:获得窗口风格。

GWL_WNDPROC
:获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用 GWL_WNDPROC 函数调用窗口过程。

GWL_HINSTANCE
:获得应用事例的句柄。

GWL_HWNDPAAENT
:如果父窗口存在,获得父窗口句柄。

GWL_ID:
获得窗口标识。

GWL_USERDATA
:获得与窗口有关的 32 位值。每一个窗口均有一个由创建该窗口的应用程序使用的 32 位值。

hWnd 参数标识了一个对话框时也可用下列值:

DWL_DLGPROC
:获得对话框过程的地址,或一个代表对话框过程的地址的句柄。必须使用函数 CallWindowProc 来调用对话框过程。

DWL_MSGRESULT
:获得在对话框过程中一个消息处理的返回值。

DWL_USER
:获得应用程序私有的额外信息,例如一个句柄或指针。

返回值:如果函数成功,返回值是所需的 32 位值;如果函数失败,返回值是 0 。若想获得更多错误信息请调用 GetLastError 函数。

备注:通过使用函数 RegisterClassEx 将结构 WNDCLASSEX 中的 cbWndExtra 单元指定为一个非 0 值来保留额外类的存储空间。

1. CListCtrl 样式及设置

2. 扩展样式设置

3. 数据插入

4. 一直选中Item

5. 选中和取消选中Item

6. 得到CListCtrl 中所有行的checkbox 的状态

7. 得到CListCtrl 中所有选中行的序号

8. 得到item 的信息

9. 得到CListCtrl 的所有列的header 字符串内容

10. 使CListCtrl 中一项可见,即滚动滚动条

11. 得到CListCtrl 列数

12. 删除所有列

13. 得到单击的CListCtrl 的行列号

14. 判断是否点击在CListCtrlcheckbox

15. 右键点击CListCtrlitem 弹出菜单

16. CListCtrl 进行大数据量更新时,避免闪烁

!时间仓促,此播客内容大多为网上整理,特向原作者表示感谢!


--------------------------------------------------------------------------------

1. CListCtrl 样式及设置
LVS_ICON:
每个item 显示大图标
LVS_SMALLICON:
每个item 显示小图标
LVS_LIST:
显示一列带有小图标的item
LVS_REPORT:
显示item 详细资料

windows 资源管理器, 查看 标签下的 大图标,小图标,列表,详细资料

LONG lStyle;
lStyle=GetWindowLong(m_ListCtrl.m_hWnd, GWL_STYLE); //
获取当前窗口style
lStyle &= ~LVS_TYPEMASK; //
清除显示方式位
lStyle |= LVS_REPORT; //
设置style
SetWindowLong(m_ListCtrl.m_hWnd, GWL_STYLE, lStyle); //
设置style


--------------------------------------------------------------------------------

2. 扩展样式设置


DWORD dwStyle = m_ListCtrl.GetExtendedStyle(); //
获取当前扩展样式
dwStyle |= LVS_EX_FULLROWSELECT; //
选中某行使整行高亮(report 风格时)
dwStyle |= LVS_EX_GRIDLINES; //
网格线(report 风格时)
dwStyle |= LVS_EX_CHECKBOXES; //item
前生成checkbox 控件
m_ListCtrl.SetExtendedStyle(dwStyle); //
设置扩展风格


--------------------------------------------------------------------------------

3. 数据插入

m_ListCtrl.InsertColumn(0," 名称",LVCFMT_LEFT,50); // 插入列
m_ListCtrl.InsertColumn(1,"
备注",LVCFMT_LEFT,50);

// 直接插入:

int nRow=m_ListCtrl.InsertItem(0, "VC++"); // 插入行
m_ListCtrl.SetItemText(nRow,1,"Visual C++ 6.0"); //
设置数据

//LVITEM 结构插入:

LVITEM item={0};
item.iItem=0; //
行号
item.mask=LVIF_TEXT; ;
item.cchTextMax=15
// 插入字符串长度
item.pszText="Visual C++ 6.0";

int nRow=m_ListCtrl.InsertItem(&item);

m_ListCtrl.SetItemText(nRow,1,"Visual C++ 6.0");


--------------------------------------------------------------------------------

4. 一直选中Item

选中style 中的 Show selection always,

或者添加扩展样式 LVS_SHOWSELALWAYS


--------------------------------------------------------------------------------

5. 选中和取消选中Item
int nIndex = 0;
//
选中
m_ListCtrl.SetItemState(nIndex,LVIS_SELECTED

LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
//
取消选中
m_ListCtrl.SetItemState(nIndex,0,LVIS_SELECTED|LVIS_FOCUSED);


--------------------------------------------------------------------------------

6. 得到CListCtrl 中所有行的checkbox 的状态
CString str;
for(int i=0; i<m_ListCtrl.GetItemCount(); i++)

{
if(m_ListCtrl.GetItemState(i, LVIS_SELECTED)==

LVIS_SELECTED || m_ListCtrl.GetCheck(i))
{
str.Format(_T("
%d 行的checkbox 为选中状态"), i);
AfxMessageBox(str);
}

}


--------------------------------------------------------------------------------

7. 得到CListCtrl 中所有选中行的序号

// 方法一:
CString str;
for(int i=0; i<m_ListCtrl.GetItemCount(); i++)
{
if(m_ListCtrl.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )
{
str.Format(_T("
选中了第%d"), i);
AfxMessageBox(str);
}
}

// 方法二:
POSITION pos=m_ListCtrl.GetFirstSelectedItemPosition();
if(pos==NULL)
TRACE0("No items were selected!/n");
else
{
while(pos)
{
int nItem=m_ListCtrl.GetNextSelectedItem(pos);
TRACE1("Item %d was selected!/n", nItem);
//
添加其他操作

}
}


--------------------------------------------------------------------------------

8. 得到item 的信息
TCHAR szBuf[1024];
LVITEM lvi;
lvi.iItem = nItemIndex;
lvi.iSubItem = 0;
lvi.mask = LVIF_TEXT;
lvi.pszText = szBuf;
lvi.cchTextMax = 1024;
m_ListCtrl.GetItem(&lvi);

关于得到设置item 的状态,还可以参考msdn 文章
Q173242: Use Masks to Set/Get Item States in CListCtrl
http://support.microsoft.com/kb/173242/en-us


--------------------------------------------------------------------------------

9. 得到CListCtrl 的所有列的header 字符串内容
LVCOLUMN lvcol;
char str[256];
int nColNum;
CString strColumnName[3];//
假如有3

nColNum = 0;
lvcol.mask = LVCF_TEXT;
lvcol.pszText = str;
lvcol.cchTextMax = 256;
while(m_list.GetColumn(nColNum, &lvcol))
{
strColumnName[nColNum] = lvcol.pszText;
nColNum++;
}


--------------------------------------------------------------------------------

10. 使CListCtrl 中一项可见,即滚动滚动条
m_ListCtrl.EnsureVisible(i, FALSE);


--------------------------------------------------------------------------------

11. 得到CListCtrl 列数
int nHeadNum=m_ListCtrl.GetHeaderCtrl()->GetItemCount();


--------------------------------------------------------------------------------

12. 删除所有列
方法一:
while(m_ListCtrl.DeleteColumn(0))
//
因为你删除了第一列后,后面的列会依次向上移动。

方法二:
int nColumns = 3; //
列数
for(int i=nColumns-1; i>=0; i--)

m_ListCtrl.DeleteColumn(i);


--------------------------------------------------------------------------------

13. 得到单击的CListCtrl 的行列号
添加listctrl 控件的NM_CLICK 消息相应函数
void CMyDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
//
方法一:

DWORD dwPos=GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos));

m_ListCtrl.ScreenToClient(&point);

LVHITTESTINFO lvinfo;
lvinfo.pt=point;
lvinfo.flags=LVHT_ABOVE;

int nItem=m_ListCtrl.SubItemHitTest(&lvinfo);
if(nItem!=-1)
{
CString strtemp;
strtemp.Format("
单击的是第%d 行第%d",

lvinfo.iItem, lvinfo.iSubItem);
AfxMessageBox(strtemp);
}

// 方法二:
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem!=-1)
{

CString strtemp;
strtemp.Format("
单击的是第%d 行第%d",
pNMListView->iItem, pNMListView->iSubItem);
AfxMessageBox(strtemp);
}

*pResult = 0;

}


--------------------------------------------------------------------------------

14. 判断是否点击在CListCtrlcheckbox
添加listctrl 控件的NM_CLICK 消息相应函数
void CMyDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{

DWORD dwPos=GetMessagePos();
CPoint point(LOWORD(dwPos), HIWORD(dwPos));

m_ListCtrl.ScreenToClient(&point);

LVHITTESTINFO lvinfo;
lvinfo.pt=point;
lvinfo.flags=LVHT_ABOVE;

UINT nFlag;
int nItem=m_ListCtrl.HitTest(point, &nFlag);
//
判断是否点在checkbox
if(nFlag==LVHT_ONITEMSTATEICON)
{
AfxMessageBox("
点在listctrlcheckbox");
}
*pResult = 0;
}


--------------------------------------------------------------------------------

15. 右键点击CListCtrlitem 弹出菜单
添加CListCtrl 控件的NM_RCLICK 消息相应函数
void CMyDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem!=-1)
{
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

CMenu menu;
VERIFY( menu.LoadMenu( IDR_MENU1 ) );
CMenu* popup = menu.GetSubMenu(0);
ASSERT( popup != NULL );
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,

point.x, point.y, this );

}
*pResult = 0;

}


--------------------------------------------------------------------------------

16. CListCtrl 进行大数据量更新时,避免闪烁
m_ListCtrl.SetRedraw(FALSE);
//
更新内容
m_ListCtrl.SetRedraw(TRUE);
m_ListCtrl.Invalidate();
m_ListCtrl.UpdateWindow();

LVS_TYPEMASK LVS_ICON+LVS_SMALLICON+LVS_LIST+LVS_REPORT 四种风格的集合。这样当我们用当前的风格 ”“not LVS_TYPEMASK” 就等于清除了当前的显示风格。

分享到:
评论

相关推荐

    机器学习1-2章习题答案

    1. **工资计算**:固定规则下的数学运算,无需机器学习的模式识别或预测能力。 2. **数据库查询执行**:预定义的查询语句执行,不涉及复杂的数据分析或模式识别。 3. **使用文字处理软件**:如Microsoft Word,这类...

    游戏程序学习1.exe

    游戏程序学习1.exe

    jquery学习1正文模板

    jquery学习1正文模板,AJAX学习用的

    多模态模型学习1——CLIP对比学习 语言-图像预训练模型_clip模型-CSDN博客.pdf

    多模态模型学习1——CLIP对比学习 语言-图像预训练模型_clip模型-CSDN博客.pdf

    linux学习1(总共2)

    linux学习1(总共2)鸟哥的私房菜PDF压缩。密码为文件名。

    2023330300223-刘喜山-学习1.rar.zip

    2023330300223-刘喜山-学习1.rar.zip

    Python机器学习1

    第一章 让计算机从数据中学习将数据转化为知识三类机器学习算法第二章 训练机器学习分类算法透过人工神经元一窥早期机器学习历史使用Python实现感知机算法基于Ir

    小象家的机器学习

    1. **定义**:监督学习是机器学习的一种形式,在这种学习过程中,模型通过带有标签的数据集进行训练,目的是为了预测新数据的输出值。 2. **应用场景**:包括但不限于图像识别、语音识别、自然语言处理等领域。 3. *...

    人工智能学习1.docx

    人工智能 人工智能(AI)学习是指通过计算机和算法来模仿人类的学习能力。AI学习的核心是“机器学习”(Machine Learning),其中的模型可以通过数据和经验来进行训练和改进,最终能够执行任务,如分类、预测、模式...

    深度学习1(对应视频1-4).ppt

    深度学习ppt(cs231n)

    11_第十一章_迁移学习1

    1. 数据与少标注的盾 2. 数据与弱计算的盾 3. 普适化模型与个性化需求的盾 4. 特定应(如冷启动)的需求 1. 迁移学习与多任务学习关系: 2. 迁移学

    基于python实现语言识别和图像识别等机器学习入门基础案例源码

    1)有监督学习、无监督学习、半监督学习和强化学习 2)批量学习和增量学习 3)基于实例的学习和基于模型的学习 4.机器学习的流程 数据采集 数据清洗 数据 ----------------------- 数据预处理 选择模型 训练模型 验证...

    爱学习广东学习网专用浏览器

    1、 一键登录到我的学习中心,能记住密码,不必每次都输入用户名,密码,验证码 2、 进入学习中心后,打开没有学习的课程,可以一键学习完,不包含考试,不必天天挂网 3、 根据你的网速你所有的课程能在10分钟内学...

    机器学习考试题目及答案1

    1. 监督学习:数据集带有标签,如线性分类器、支持向量机等。 2. 无监督学习:数据集无标签,依赖于样本间的相似性,如k-means算法。 3. 半监督学习:面对大量无标签数据和少量有标签数据的情况。 4. 强化学习:通过...

    联邦学习-杨强1

    联邦学习(Federated Learning)是一种分布式机器学习方法,由谷歌在2016年首次提出,主要为了解决数据孤岛问题和保护用户隐私。在传统的机器学习中,大量的数据需要集中在一个中心节点进行处理和建模,这在许多领域...

    [从0到1]关于深度学习,这里比你想的还要全.pdf

    1. 深度学习的定义和历史发展 2. 深度学习的开发技能,包括Python、C++和R语言等 3. 深度学习的开源框架,包括TensorFlow、CNTK、Torch、Caffe、Theano、Mxnet等 4. 深度学习的应用前景,包括图像/语音识别、自然...

    (2021年更新版)国家开放大学学习指南形考任务1答案.docx

    国家开放大学学习指南形考任务1答案 本文将从国家开放大学学习指南形考任务1答案中提炼出相关的知识点,并对每个问题进行详细的解释和分析。 一、国家开放大学的特征 国家开放大学是一所新型大学,具有不同于普通...

    网络学习工具作业1.pdf

    网络学习工具作业1.pdf网络学习工具作业1.pdf网络学习工具作业1.pdf网络学习工具作业1.pdf网络学习工具作业1.pdf网络学习工具作业1.pdf

    机器学习入门课件

    1. 监督学习:机器学习的一种主要类型,其中算法通过已标记的训练数据学习规律,然后用于预测未知数据的标签,如分类和回归问题。 2. 无监督学习:在没有标签的数据集上进行的学习,目的是发现数据中的内在结构或...

Global site tag (gtag.js) - Google Analytics