日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈谈CListCtrl如何调整行高

發布時間:2025/4/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈CListCtrl如何调整行高 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

原文鏈接:?http://blog.csdn.net/sstower/article/details/9094939

調整CListCtrl 行高通常有3種方法:

1.設定字體
2.設定圖片
3.處理MeasureItem消息。

這里只是談一談第3種方法,對于CListCtrl 來說,它只支持owner draw fixed 而不像CListBox 既支持owner draw fixed也支持owner draw variable,這里variable是指行高度是可變的;fixed 指行高度固定。
我們雖然很容易在classWizard 找到虛函數DrawItem但卻找不到MeasureItem函數。這個時候只能自己動手添加這樣的函數,它的原型為:

MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)

{

}

從CListCtrl繼承一個類,假如類名叫CTreeList,這樣它的函數實現就是這個樣子:

void CTreeList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)

{

}

注意在消息映射部分要添加對WM_MEASUREITEM的反射消息:

ON_WM_MEASUREITEM_REFLECT()

默認情況下,這個消息并不會觸發。這時可在PreSubclassWindow()函數中人為觸發:

?

void CTreeList::PreSubclassWindow()
{
CRect rcwin;
GetWindowRect(rcwin);

WINDOWPOS wp;
wp.hwnd=m_hwnd;
wp.cx=rcwin.Width();
wp.cy=rcwin.Height();
wp.flags=SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER;
SendMessage(WM_WINDOWPOSCHANGED,0,(LPARAM)&wp);
}


處理MeasureItem消息:

void CTreeList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight = m_nItemHeight;
}

最后別忘了在構造函數中初始化m_nItemHeight為你想要的值。

這里稍微怪異一點的是為什么發送WM_WINDOWPOSCHANGED會觸發WM_MEASUREITEM消息。

?

轉載于:https://www.cnblogs.com/huhu0013/p/4612914.html

總結

以上是生活随笔為你收集整理的谈谈CListCtrl如何调整行高的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。