list控件为什么无法显示数据库中内容,该如何处理

list控件为什么无法显示数据库中内容,该如何处理,第1张

可以试试下面的代码:

创建单文档应用程序,在选择窗口视图类型时,选择CListView视图。

在视图类的初始化消息函数中添加如下显示控件的代码:

void CTestlistView::OnInitialUpdate()

{

CListView::OnInitialUpdate()

CDC* dc = GetDC()

TEXTMETRIC tm

dc->GetTextMetrics(&tm)

GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTASCENDING)

GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,

LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES|LVS_EX_TRACKSELECT)

GetListCtrl().InsertColumn(0,"Name",LVCFMT_LEFT,30*tm.tmAveCharWidth,0)

GetListCtrl().InsertColumn(1,"Comment",LVCFMT_LEFT,70*tm.tmAveCharWidth,1)

// TODO: You may populate your ListView with items by directly accessing

// its list control through a call to GetListCtrl().

}

1.假设你的窗口是模态窗口

你的方法有很大问题

按下KEY,显示对话框

那么主线程就执行到子对话框中的代码

你的所谓"KEY回调函数"被阻塞

等子对话框终止后

"KEY回调函数"才恢复执行

那个时候对话框都没有了

做什么也没有效果了

在"KEY回调函数"内子对话框窗口类中的个变量还是有效的

但是子对话框中的子控件"List"已经销毁了

解决办法:

在子对话框的OnInitDialog函数中初始化你的List

而非在"KEY回调函数"中

2.如果是非模态对话框

那么"KEY回调函数"不会阻塞

你可以设置List内容

但是必须经过动态创建对话框类的实例并且调用Create创建对话框

如果这些没有做

那么仍旧是访问异常

3.DoDataExchange用于控件和某数据成员间建立一种隐射关系

不应该将它作为初始化函数使用

初始化一般数据可以使用构造函数

初始化子窗口可以使用OnInitDialog

4.关于ListCtrl

Dlg1.m_List.InsertItem(0,"行")//插入行

Dlg1.m_List.SetItemText(0,1,"列")//插入列

在SetItemText之前

请务必使用InsertColumn函数插入一列

不然你想插入的那一列根本不存在

或许也是一个访问异常的原因(我不确定会否异常,但这样做是不对的)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9655311.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存