vc/mfc 中如何向treecontrl 中添加条目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc/mfc 中如何向treecontrl 中添加条目相关的知识,希望对你有一定的参考价值。
比如说将一个数据库中的表项用树形结构显示
假设m_tree是你的控件所关联的变量:1。设置风格为LVS_REORT m_tree.ModifyStyle(0, LVS_REPORT);
2.插入列头.
m_tree.InsertColumn( 0, _T("col1"), LVCFMT_CENTER, 60 );
m_tree.InsertColumn( 1, _T("col2"), LVCFMT_CENTER, 60 );
....
3. 插入一行:
int nItem=m_tree.InsertItem( GetItemCount(), pszText );//此时pszTest为该行第一列的内容
4.增加该行的其它几列
m_ltree.SetItem( nItem, 1, LVIF_TEXT, pszText, 0, 0, 0, null );
//nItem表示第几行,一般由上面的InsertItem返回,第二个参数为第几列
这是最简单的用法了,要完全了解CTreeCtrl的用法,只有MSDN才能说清了。 参考技术A TreeView_SetItem
见MSDN吧。
如何在 vc++ mfc 中使用非静态方法创建线程
【中文标题】如何在 vc++ mfc 中使用非静态方法创建线程【英文标题】:how to create a thread using a non static method in vc++ mfc 【发布时间】:2011-05-14 11:12:23 【问题描述】:我正在使用这个调用创建一个线程:
m_pThread=AfxBeginThread(read_data,(LPVOID)hSerial);
read_data
是我班级中的静态方法。
但我想调用一个非静态方法并创建一个线程。
因为我想在这个线程和我的一个类方法之间共享一个变量。
我尝试使用静态变量,但它给出了一些错误。
【问题讨论】:
【参考方案1】:你不能使用函数的非静态成员作为线程过程来创建线程:原因是类的所有非静态方法都有一个隐式的第一个参数,这是指针 this。
这个
class foo
void dosomething();
;
其实是
class foo
void dosomething(foo* this);
;
因此,函数签名与线程过程所需的签名不匹配。您可以将静态方法用作线程过程并将 this 指针传递给它。这是一个例子:
class foo
CWindThread* m_pThread;
HANDLE hSerial;
static UINT MyThreadProc(LPVOID pData);
void Start();
;
void foo::Start()
m_pThread=AfxBeginThread(MyThreadProc,(LPVOID)this);
UINT foo::MyThreadProc(LPVOID pData)
foo* self = (foo*)pData;
// now you can use self as it was this
ReadFile(self->hSerial, ...);
return 0;
【讨论】:
【参考方案2】:我不会重复马吕斯所说的,但会补充说我使用以下内容:
class foo
CWindThread* m_pThread;
HANDLE hSerial;
static UINT _threadProc(LPVOID pData);
UINT MemberThreadProc();
void Start();
;
void foo::Start()
m_pThread=AfxBeginThread(_threadProc,(LPVOID)this);
UINT foo::MyThreadProc(LPVOID pData)
foo* self = (foo*)pData;
// call class instance member
return self->MemberThreadProc();
UINT foo::MemberThreadProc()
// do work
ReadFile(hSerial, ...);
return 0;
每次在 MFC 应用程序的类中使用线程时,我都会遵循这种模式。这样我就可以方便地让所有成员都像我一样在课堂上。
【讨论】:
以上是关于vc/mfc 中如何向treecontrl 中添加条目的主要内容,如果未能解决你的问题,请参考以下文章
VC/MFC 如何让一张图片文件放大缩小呢。比如图片的分辨率是1024*768的,然后将它成了分辨率改为300*300