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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

为MFC中的ListBox添加水平滚动条

發(fā)布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为MFC中的ListBox添加水平滚动条 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我們知道,MFC中的水平滾動條并不像垂直滾動條那樣的智能。當文字超出ListBox的寬度時,水平滾動條并不會自己出現(xiàn),我們需要手動的調(diào)用CListBox中的函數(shù)SetHorizontalExtent設(shè)置寬度,單位為像素。

我們可以自己添加智能水平滾動條,現(xiàn)在我們首先隨便創(chuàng)建一個ListBox控件,并將它的HorizontalScrollbar屬性設(shè)置為True,如下:

?

這樣,控件的創(chuàng)建就完成了,然后就需要添加代碼來實現(xiàn)智能水平滾動條了。

首先,我們創(chuàng)建一個類,這里,我命名為CIHListBox,該類需要繼承CListBox類,以便添加水平滾動條。

然后我們需要覆蓋CListBox類的AddString和InsertString接口以便添加水平滾動條。

最后自然就是我們主要的計算智能水平滾動條的方法了,這里命名為RefushHorizontalScrollBar。

整個類的聲明如下:

#ifndef _IHLISTBOX_H_
#define _IHLISTBOX_H_

class CIHListBox: public CListBox
{
public:
CIHListBox(void);
~CIHListBox(void);

// 覆蓋該方法以便添加水平滾動條
int AddString( LPCTSTR lpszItem );
int InsertString( int nIndex, LPCTSTR lpszItem );

// 計算水平滾動條寬度
void RefushHorizontalScrollBar( void );
};

#endif

首先,AddString和InsertString沒有什么懸念,就是調(diào)用基類的方法后重新計算下水平滾動條的寬度,代碼如下:

int CIHListBox::AddString( LPCTSTR lpszItem )
{
int nResult = CListBox::AddString( lpszItem );

RefushHorizontalScrollBar();

return nResult;
}

int CIHListBox::InsertString( int nIndex, LPCTSTR lpszItem )
{
int nResult = CListBox::InsertString( nIndex, lpszItem );

RefushHorizontalScrollBar();

return nResult;
}

然后就是RefushHorizontalScrollBar方法了,該方法的實質(zhì)是計算ListBox中每項的寬度,然后將最大寬度設(shè)置為水平寬度。實現(xiàn)代碼如下:

void CIHListBox::RefushHorizontalScrollBar( void )
{
CDC *pDC = this->GetDC();
if ( NULL == pDC )
{
?? return;
}

int nCount = this->GetCount();
if ( nCount < 1 )
{
?? this->SetHorizontalExtent( 0 );
?? return;
}

int nMaxExtent = 0;
CString szText;
for ( int i = 0; i < nCount; ++i )
{
?? this->GetText( i, szText );
?? CSize &cs = pDC->GetTextExtent( szText );
?? if ( cs.cx > nMaxExtent )
?? {
??? nMaxExtent = cs.cx;
?? }
}

this->SetHorizontalExtent( nMaxExtent );
}

然后,我們在獲取ListBox控件的時候,只需要使用子類的方法就可以實現(xiàn)智能水平滾動條了。

我的嘗試代碼如下:

#define DLG_LIST_TEST ((CIHListBox*)(GetDlgItem(IDC_LISTTEST)))

DLG_LIST_TEST->AddString( TEXT("This is lenth tes") );
DLG_LIST_TEST->AddString( TEXT("This is lenth test test test") );
DLG_LIST_TEST->AddString( TEXT("This is lenth test test test test test11111") );

結(jié)果如下:

?

以上僅供大家參考,謝謝大家^-^!~

?

總結(jié)

以上是生活随笔為你收集整理的为MFC中的ListBox添加水平滚动条的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产亚洲在线观看 | 伊人久久综合视频 | 床戏高潮做进去大尺度视频网站 | 操欧美女 | 999伊人| 色七七久久 | 大地av | 91九色在线播放 | 韩国黄色视屏 | www.亚洲一区 | 久久com| 欧美性一区二区三区 | 最新黄色在线 | 一级全黄裸体免费观看视频 | 人人干人人玩 | 亚洲欧美日本在线 | 一区二区视频免费 | 五月婷婷天堂 | 动漫一区二区 | 日本高潮网站 | 欧美激情久久久久 | 最新国产网站 | 国产视频精品免费 | 永久免费看片在线播放 | 国产白浆视频 | 中文字幕无码精品亚洲资源网久久 | 成人三级在线播放 | 天堂在线视频网站 | 性一级视频 | 男女视频一区二区 | 国产高清一级片 | 最新av不卡 | 女优一区二区三区 | 亚洲午夜久久久久久久国产 | 日韩一级不卡 | 欧美日批| 日本一区免费看 | 男女精品视频 | 色男天堂 | 一级性爱视频 | 波多野吉衣毛片 | 爱情岛亚洲首页论坛小巨 | 日韩久久精品视频 | 日本不卡视频一区二区 | 黄色av网站在线免费观看 | 大陆极品少妇内射aaaaaa | 欧美大片在线观看 | 精品国产视频一区二区三区 | 日韩欧美黄 | 亚洲精品在线电影 | 国产精品91在线观看 | 深夜激情网站 | 成人一二三 | 青青在线视频 | 久久免费手机视频 | 亚洲精品久久久久久宅男 | 久久久久久久久久久久电影 | 久久66热这里只有精品 | 8x8x国产精品一区二区 | 四虎视频国产精品免费入口 | 日日夜夜草 | 亚洲熟妇一区二区三区 | 天天摸天天操天天爽 | 色狗网站| 午夜天堂网 | 无码 制服 丝袜 国产 另类 | 国语对白在线观看 | 2020国产精品 | 亚洲人午夜精品 | 日韩一区二区三区三四区视频在线观看 | 天天舔天天爱 | 欧美成人国产精品高潮 | 欧美三级a做爰在线观看 | 少妇与公做了夜伦理69 | 亚洲福利视频一区 | 国产51精品 | 国产亚洲精品久久久久丝瓜 | 国产精品久久久久久久久晋中 | 国产精品久久久久久久久久久久午夜片 | 亚洲精久| 欧美丰满熟妇bbbbbb百度 | 91福利在线观看视频 | 日本伊人色 | 日本va欧美va欧美va精品 | 午夜网站在线 | 麻豆av电影网 | 午夜婷婷网 | 亚洲综合91 | 激情五月av | 亚洲 美腿 欧美 偷拍 | 国产麻豆影视 | 波多野结衣av无码 | 高清国产午夜精品久久久久久 | 亚洲精品久久久久av无码 | 日韩在线视频网址 | 98精品视频| 久久久久99人妻一区二区三区 | 五月涩 | 亚洲熟女综合色一区二区三区 |