簡體   English   中英

如何使用本機C ++ WIN32 API將Microsoft Office Access 2007數據庫中的大量記錄添加到列表框控件中

[英]How to add a large amount of records from Microsoft Office Access 2007 database into a list box control using the native C++ WIN32 API

如何使用本機C ++ WIN32 APIMicrosoft Office Access 2007數據庫中的大量記錄添加到列表框控件中?

你好朋友! 我想使用本機C ++ WIN32 API制作像Microsoft Encarta English Dictionary這樣的字典。 我的數據庫是Microsoft Office Access 2007格式的數據庫,具有21,364條記錄(充滿了詞匯及其含義)。 我想使用“ CreateWindow ”函數和“ listbox ”窗口類名稱盡快將詞匯表添加到列表框控件中,這樣就不會有人煩惱等待。

我對OLE DB數據庫連接方法非常感興趣,因為據說它是所有其他方法中最快的。 我按照此鏈接中提供的OLE DB教程進行操作: http : //msdn.microsoft.com/zh-cn/library/office/ff965871%28v=office.14%29 在學習完本教程之后,我成功連接到具有21,364條記錄的Microsoft Office Access 2007格式的數據庫,並使用“ SendMessage ”函數和“ for ”循環中的“ LB_ADDSTRING ”消息類型將詞匯表添加到列表框中。

但是,我覺得使用“ for ”循環將21,364條記錄添加到列表框中所花費的時間比某人耐心等待的時間長一點。 相反,我確信Microsoft Encarta英語詞典應該具有數百萬個詞匯,而且它們都以如此快的速度添加到列表框中,以至於有人會欣喜若狂!

誰能請我告訴我,指導我,向我展示一些代碼示例,如何使用本機C ++ WIN32 API加快將大量 Microsoft Office Access 2007數據庫記錄添加到列表框中的速度? 我將非常感激!

如果要快速將大量記錄添加到列表框中,可以采取一些步驟。

  1. 對數據進行預排序,並告訴列表框不要對數據進行排序。
  2. PE為數據分配空間(MS建議,但與此相差無幾)。
  3. 考慮使用“虛擬列表框”-所有者按需繪制項目,而不是一開始就插入它們。

對於約20,000件物品,第一個可能就足夠了。 快速檢查一下,將20,000個項目插入到關閉了排序功能的列表框中,我花了大約半秒鍾的時間不做任何其他事情,因此,盡管在填充過程中有一個暫停,但除非這樣做,否則就很煩人了經常發生(即,您經常破壞並重新填充列表框)。

同時,我確實有義務指出,包含20,000個項目的列表框永遠不可能成為真正出色的設計。 您可能想要/需要做一些事情來縮小在任何給定時間向用戶真正顯示的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM