青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

積累的VC編程小技巧之列表框

1.列表框中標題欄(Column)的添加

創建一個List Control,其IDIDC_LIST,在其Styles屬性項下的View項里選擇ReportAlign項里選擇TopSort項里選擇None.

然后在該List所在對話框的類(頭文件)里創建ClistCtrl的一個對象m_list然后在.cpp文件的OnInitDialog()之類的函數里實現如下代碼:

CString strname[3];

strname[0]="Screen Name";

strname[1]="Form ID";

strname[2]="Category Path";

for(int i=0;i<3;i )

{

m_List.InsertColumn(i,strname[i],LVCFMT_LEFT,130);

}

在這之前也要將List ControlIDClistCtrl的對象m_listDoDataExchange(CDataExchange* pDX)函數里綁定,如下:

DDX_Control(pDX, IDC_LIST, m_List);

2.如何防止在列表框中添加很多數據出現不停的刷新?

[問題提出]
listbox添加很多數據的時候,由于控件不停的刷新,導致出現閃爍,如何解決?
[解決方法]
再添加數據以前,禁止控件刷新,數據添加完畢以后,再刷新一次。
[程序實現](其中:m_ListBoxCListBox的控件類型的變量)
m_ListBox.LockWindowUpdate();//禁止本listbox刷新。
for(int i=0;i<9999;i )
{
m_ListBox.AddString("test");
}//添加數據。
this->RedrawWindow(NULL,NULL,RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);

3.列表框中選擇變化時如何獲得通知?

我在Report View中使用了一個CListCtrl(自繪制類型),我想知道什么時候選擇項發生了改變.

在選擇項變化時,可以使用按鈕有效或失效,按如下操作:

加入LVN_ITEMCHANGED消息處理.
void CYourClassNameHere::OnItemchangedEventList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;

if (pNMListView->uChanged == LVIF_STATE)

{
if (pNMListView->uNewState)

{
GetDlgItem(IDC_DELETE)->EnableWindow(TRUE);

}
else

{
GetDlgItem(IDC_DELETE)->EnableWindow(FALSE);
}
}

}

4.列表框控件中整欄選擇?

我在處理List控件時碰到了麻煩,我想創建一個ListView,來依據Tree控件的選擇同時在ListViewReportView中顯示列表的信息.以下是相關的代碼:

// Set full line select
ListView_SetExtendedListViewStyle(m_plstCustomers->GetSafeHwnd(),
LVS_EX_FULLROWSELECT);

按如下方法處理:

// -------------------- begin of snippet --------------------------------
bool CCommCtrlUtil32::ListCtrl_ModifyExtendedStyle(CListCtrl& p_rListCtrl,
const DWORD p_dwStyleEx,
const bool p_bAdd)
{
HWND t_hWnd = p_rListCtrl.GetSafeHwnd();
DWORD t_dwStyleEx = ListView_GetExtendedListViewStyle(t_hWnd);

if(p_bAdd)
{
if(0 == (p_dwStyleEx & t_dwStyleEx))
{
// add style
t_dwStyleEx |= p_dwStyleEx;
}
}
else
{
if(0 != (p_dwStyleEx & t_dwStyleEx))
{
// remove style
t_dwStyleEx &= ~p_dwStyleEx;
}
}

ListView_SetExtendedListViewStyle(t_hWnd, t_dwStyleEx);

return true;
}

5.如何雙擊列表框項啟動一個與文件關聯的程序?

有人問我如何雙擊列表框項啟動一個程序?其實這個問題很簡單,Windows中有一個API函數可以打開任何類型的文件:

ShellExecute(NULL,"open",lpFileName,NULL,NULL,SW_SHOWNORMAL);

參數 lpFileName 是文件的全路徑名。用這個變量你可以傳遞象“C:\\MyExcelFile.xls”或者“http://www.vckbase.com”啟動Excel程序或者瀏覽器程序。假如你只是想獲取與文件關聯的程序名,而不是要運行程序,那么調用::FindExecutable就可以了。

6.如何得到列表框中所選擇項的String?

[問題提出]
如何得到CListBox所選擇項的String
[解決方法]
用到:CListBox::GetText()
[程序實現]
CString scInfo;
pList->GetText( GetCurSel(),scInfo);

7.鎖定ListView的欄目頭寬度

編譯:NorthTibet

世界之大,真是無其不有。Windows 應用程序的GUI標準明確規定了 ListView 欄目頭(Column Header)的寬度必須是可調整的,這本來是專門為用戶考慮而設計的控制特性,可是偏偏就有用戶拒絕這樣的特性。作為技術人員,用戶的需求是很難拒絕的。盡管這明顯是一種非典型性需求。本文將通過一個實例來示范如何實現 ListView Column Header 寬度的鎖定。
ListView 及其 Column Header 實際上都是 Windows 通用控件(Comctl32.dll) 的一部分。所以查一查 MSDN 中與“Header Control”相關的控件資料不難發現,欄目頭的鎖定與否與幾個 Windows 的通知消息密切相關,這幾個消息分別是 HDN_TRACKHDN_BEGINTRACK HDN_ENDTRACKA。其中 HDN_BEGINTRACK 是本文要非凡關照的一個。當用戶在欄目頭上拖拽鼠標時,假如位置正好在改變寬度的分割條上,則欄目頭控件會向其父窗口發送一個 HDN_BEGINTRACK 通知消息。為了實現欄目頭寬度的鎖定,就必須搞掂這個通知消息。不能將它傳遞到父窗口,但是,這個消息與 Windows 中形形色色的其它通知消息一樣,有兩個版本:一個版本是 HDN_BEGINTRACKW,專門用于寬字符和 Unicode 字符集;另一個版本是 HDN_BEGINTRACKA,專門用于 ANSI 字符集。這兩個版本的使用方法可以從公共控件的頭文件 commctrl.h 中獲取:

// From commctrl.h
#ifdef UNICODE
#define HDN_BEGINTRACK HDN_BEGINTRACKW
#else
#define HDN_BEGINTRACK HDN_BEGINTRACKA
#endif     

所以在實現對消息的 HDN_BEGINTRACK 處理時,實際上是根據 UNICODE 的取值實現對 HDN_BEGINTRACKA HDN_BEGINTRACKW 的處理。那么 Header Control 到底是發送的哪一個消息呢?在這里必須明白:Header Control Windows 通用控件的一部分,它的實現都在 comctl32.dll 動態鏈接庫中。由于這個 DLL 已經被編譯成可執行代碼,因此在工程中修改 UNICODE 的設置將無濟于事。如何知道欄目頭控件發送哪一個版本的通知消息呢?是 A 版本還是 W 版本?
為了找到答案,我們必須求助一個經常被遺忘的消息 WM_NOTIFYFORMAT。一般控件第一次被創建時,都要向父窗口一個消息詢問父窗口需要哪個版本的通知消息。然后父窗口返回 NFR_ANSI NFR_UNICODE。假如父窗口不處理 WM_NOTIFYFORMAT,那么這個消息將根據父窗口或對話框本身的首選項被傳遞到 Windows DefWindowProc 消息處理例程進行默認處理。默認為 UNICODE。因此,要知道通知消息的版本,必須處理 ListCtrl WM_NOTIFYFORMAT。為了確認父窗口的返回值,你可以做一個試驗便明白了。
假如你不想處理 WM_NOTIFYFORMAT 消息,那么完全可以通過雙雙實現 HDN_BEGINTRACKA HDN_BEGINTRACKW 通知消息的處理來簡化問題的解決方案,同時這種方法也更可靠和通用。此時代碼將同時支持 ANSI Unicode。本文附帶的例子程序示范了這種方法的實現。如圖一所示:

圖一 鎖定欄目頭寬度

實現代碼很簡單,Header 控件發送 HDN_XXX 到父窗口(ListCtrl),在 MFC 中可以利用消息反射來處理 Header 控件的通知消息。因為可鎖定欄目頭特性本身更趨向于 Header 控件的屬性,而不是 ListCtrl 的屬性。假如你不用 MFC ,那么就得處理 ListCtrl 中的通知消息。例子程序使用了消息反射機制,在 Header 控件的消息映射使用 ON_NOTIFY_REFLECT,也就是該寫虛擬成員函數 OnChildNotify

BOOL CLockableHeader::OnChildNotify(UINT msg, WPARAM wp, LPARAM lp, LRESULT* pRes)
{
     NMHDR& nmh = *(NMHDR*)lp;
     if (nmh.code==HDN_BEGINTRACKW || nmg.code==HDN_BEGINTRACKA)
         return *pRes=TRUE;
     ......
}

因為 OnChildNotify 是虛函數,所以沒有必要具備消息映射入口。只要實現此函數即可。在任何應用中,Header 發送的消息非此即彼,不會兩者都發送。不管怎樣,所發送的通知消息在到達父窗口之前都會被吃掉。也就是說,消息處理總是返回 TRUE,是否鎖定欄目頭的寬度通過一個標志來控制:應用程序通過 Lock 來修改標志的值。
假如鎖定了頭寬度,那么同時也必須禁用改變寬度的光標,這樣用戶界面才會有一致性,要實現這一點也很簡單:

BOOL CLockableHeader::OnSetCursor( CWnd* pWnd, UINT nHit, UINT msg)
{
     return m_bLocked ? TRUE : CHeaderCtrl::OnSetCursor(pWnd, nHit, msg);
}      

假如欄目頭被鎖定,則 OnSetCursor 返回 TRUE,此時光標不會被重新設置,否則由 Header 控件的進行默認處理。鎖定寬度后,當鼠標移到欄目頭上時,Windows 顯示標準的箭頭光標,而不是帶左右箭頭光標。
CHeaderCtrl 派生類出來的類的使用方法與處理對話框控制一樣,通過在父窗口的 OnCreate 的處理例程中進行子類化。實現細節請參考例子源代碼:

     
// CMyView is derived from CListView
int CMyView::OnCreate(LPCREATESTRUCT lpcs)
{
  VERIFY(CListView::OnCreate(lpcs)==0);
  return m_header.SubclassDlgItem(0,this) ? 0 : -1;
}
由于 Header 控制的資源 ID = 0,所以上面的代碼是行得通的。為了有一個友好的用戶界面,例子程序創建了一個命令菜單和界面更新處理例程。如圖一所示。

posted on 2008-04-02 18:53 wrh 閱讀(729) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区高清| 欧美成人a视频| 1024亚洲| 亚洲黄色在线看| 一本大道久久a久久综合婷婷| 亚洲精品久久久久中文字幕欢迎你| 在线观看精品| 91久久一区二区| 亚洲午夜精品一区二区| 亚洲综合色激情五月| 久久久久久夜精品精品免费| 欧美激情1区| 亚洲特级片在线| 久久午夜电影| 欧美午夜理伦三级在线观看| 国产欧美一区视频| 亚洲国产精品一区二区三区| 亚洲一区二区免费视频| 久久久久久久综合| 亚洲日本欧美日韩高观看| 亚洲免费观看高清完整版在线观看| 亚洲午夜在线观看| 久久男人av资源网站| 欧美三区在线视频| 在线成人欧美| 欧美一区二区三区男人的天堂 | 久久大综合网| 欧美国产高清| 午夜老司机精品| 欧美高清日韩| 狠狠久久亚洲欧美| 亚洲影院免费| 亚洲国产一区二区在线| 欧美一区二区在线看| 欧美日韩国产欧| 亚洲国产小视频| 久久夜色精品国产亚洲aⅴ| avtt综合网| 欧美国产日本韩| 影音先锋另类| 久久精品国产成人| 亚洲三级影院| 久久久av网站| 日韩一区二区精品葵司在线| 久久久噜噜噜久久中文字免| 国产精品永久免费在线| 日韩一区二区电影网| 美女脱光内衣内裤视频久久影院| 亚洲一区二区三区视频| 欧美色精品在线视频| 日韩网站在线看片你懂的| 欧美激情一区二区三区在线| 久久九九全国免费精品观看| 国产亚洲一区二区三区在线观看| 亚洲欧美999| 亚洲精品小视频| 欧美sm重口味系列视频在线观看| 黄色一区二区在线观看| 久久综合狠狠综合久久综合88 | 国产精品国产三级国产普通话99 | 欧美日韩一二三区| 日韩亚洲精品电影| 日韩视频免费看| 欧美日韩在线精品| 亚洲综合好骚| 午夜精品久久一牛影视| 国产农村妇女精品| 久久视频在线视频| 美女精品在线观看| 一区二区三区成人 | 蜜桃伊人久久| 亚洲国产精品专区久久| 亚洲激情影院| 国产精品成人一区二区艾草| 午夜视频久久久| 先锋影音国产精品| 永久域名在线精品| 亚洲国产日韩欧美在线图片| 欧美私人网站| 久久久777| 免费永久网站黄欧美| 亚洲午夜国产一区99re久久| 亚洲自啪免费| 亚洲激情第一区| 亚洲先锋成人| 在线观看亚洲a| 99热在线精品观看| 国产一区二区在线观看免费播放| 欧美高清一区二区| 国产精品久久久久秋霞鲁丝| 久久久久国产精品www| 欧美国产先锋| 久久精品国产精品| 欧美日韩成人网| 久久精品亚洲一区二区三区浴池| 欧美1区3d| 国产精品久久久久久av下载红粉 | 蜜桃精品久久久久久久免费影院| 日韩视频在线免费| 午夜精品久久久久久久久久久| 亚洲国产美女久久久久| 亚洲欧美中文另类| 一区二区三区国产精华| 久久精品一区二区三区不卡牛牛 | 久久精品在线免费观看| 欧美精品尤物在线| 麻豆精品一区二区综合av| 欧美日韩在线观看视频| 欧美大片va欧美在线播放| 国产嫩草一区二区三区在线观看| 欧美激情网站在线观看| 国产欧美日韩精品丝袜高跟鞋 | 99视频在线精品国自产拍免费观看 | 136国产福利精品导航| 亚洲视频电影图片偷拍一区| 亚洲电影免费在线观看| 午夜性色一区二区三区免费视频| 日韩一级免费| 女人天堂亚洲aⅴ在线观看| 久久久久国产一区二区三区| 欧美色网在线| 亚洲精品一区在线| 亚洲三级毛片| 欧美成人精品在线视频| 毛片基地黄久久久久久天堂| 欧美高清视频一区二区| 国产情侣一区| 亚洲欧美久久久久一区二区三区| 亚洲在线一区| 欧美日韩一区二区三区高清| 亚洲国内高清视频| 亚洲日本中文字幕免费在线不卡| 久久天天躁夜夜躁狠狠躁2022| 久久久久久一区二区三区| 国产日韩欧美一区二区三区在线观看 | 亚洲国产日韩欧美在线动漫| 亚洲福利在线观看| 久久久久久久久久看片| 久久亚洲精品视频| 一区二区自拍| 美女亚洲精品| 亚洲国产日日夜夜| 欧美日韩黄色大片| 日韩视频在线永久播放| 一区二区三区四区五区在线| 欧美日韩精品二区| 在线综合亚洲欧美在线视频| 亚洲一区免费| 国产精品网红福利| 亚洲女爱视频在线| 久久手机精品视频| 在线国产欧美| 欧美第一黄色网| 亚洲最新在线| 欧美中文在线观看| 韩国成人精品a∨在线观看| 久久久欧美精品| 亚洲国产精品一区制服丝袜 | 欧美大片免费观看在线观看网站推荐| 尤物99国产成人精品视频| 欧美成人日韩| 亚洲视频一二| 久久这里只有| 一区二区激情视频| 国产农村妇女精品| 老司机午夜精品视频| 亚洲精品之草原avav久久| 亚洲在线视频观看| 伊人久久大香线蕉av超碰演员| 欧美成人国产| 亚洲午夜精品| 亚洲高清成人| 欧美一区2区三区4区公司二百 | 永久免费毛片在线播放不卡| 欧美精品日韩三级| 午夜精品视频网站| 亚洲二区在线| 欧美怡红院视频| 亚洲精品三级| 国产一区二区精品久久91| 欧美日产国产成人免费图片| 欧美在线亚洲一区| 日韩视频―中文字幕| 欧美va日韩va| 欧美一区1区三区3区公司| 亚洲精品美女在线观看播放| 国产午夜精品久久久久久久| 欧美日韩午夜在线| 欧美aaaaaaaa牛牛影院| 久久精品99无色码中文字幕| 99精品国产福利在线观看免费| 欧美gay视频激情| 欧美伊人久久大香线蕉综合69| 99综合在线| 揄拍成人国产精品视频| 国产一区二区按摩在线观看| 国产精品区免费视频| 欧美日韩亚洲三区| 欧美日韩国产综合新一区| 欧美高清视频一区二区三区在线观看|