网上查了一下,好像要加代码,但我不知道加到哪里?怎么加?请高手赐教!望给出具体方法!谢过!
6 个解决方案
#1
void CSerialCommuncitionDlg::SetHScroll()
{
CDC* dc = GetDC();
SIZE s;
int index;
CString str;
long temp;
for(index= 0; index< m_lstCommunicationInfo.GetCount(); index++)
{
m_lstCommunicationInfo.GetText(index,str);
s = dc->GetTextExtent(str,str.GetLength()+1); // 获取字符串的像素大小
// 如果新的字符串宽度大于先前的水平滚动条宽度,则重新设置滚动条宽度
// IDC_LISTBOX为m_List的资源ID
temp = (long)SendDlgItemMessage(IDC_LIST_COMMUNICATIONINFO, LB_GETHORIZONTALEXTENT, 0, 0); //temp得到滚动条的宽度
if (s.cx > temp)
{
SendDlgItemMessage(IDC_LIST_COMMUNICATIONINFO, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
}
}
ReleaseDC(dc);
}
#2
我的是IDC_LIST1,类是CSend,所以我把IDC_LIST_COMMUNICATIONINFO改成IDC_LIST1,void CSerialCommuncitionDlg::SetHScroll()
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
#3
我的是IDC_LIST1,类是CSend,所以我把IDC_LIST_COMMUNICATIONINFO改成IDC_LIST1,void CSerialCommuncitionDlg::SetHScroll()
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
#4
你每次向ListCtrl添加新的字符串的时候,都要调用这个函数一次。添加一次,然后调用一次。
#5
一直没注意过,学习了
#6
本人也是遇到同样问题,经过很长时间搜索才找到1楼所发的方法,并修改通过了,在此谢谢1楼,为免大家再次受此问题的困扰,发表出来,大家共同学习。
4楼所说的:你每次向ListCtrl添加新的字符串的时候,都要调用这个函数一次。添加一次,然后调用一次。这个也是要的
下面代码中出现的:IDC_LIST1为控件中ListBox的ID,
CMultiThreadandsectionDlg为我自己定义的对话框类,这两个自己更换成你自己定义的对话框类
void CMultiThreadandsectionDlg::SetHScroll()
{
HWND hwndDataBox = ::GetDlgItem(g_hwnd,IDC_LIST1);
CDC* dc = GetDC();
SIZE s;
int index;
CString str;
long temp;
for(index= 0; index< ListBox_GetCount(hwndDataBox); index++)
{
ListBox_GetText(hwndDataBox,index,str);
s = dc->GetTextExtent(str,strlen(str)/2+30); // 获取字符串的像素大小,这个你可以自己取长度,不过一定要用strlen()这个函数
// 如果新的字符串宽度大于先前的水平滚动条宽度,则重新设置滚动条宽度
// IDC_LISTBOX为m_List的资源ID
temp = (long)SendDlgItemMessage(IDC_LIST1, LB_GETHORIZONTALEXTENT, 0, 0); //temp得到滚动条的宽度
if (s.cx > temp)
{
SendDlgItemMessage(IDC_LIST1, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
}
}
ReleaseDC(dc);
}
4楼所说的:你每次向ListCtrl添加新的字符串的时候,都要调用这个函数一次。添加一次,然后调用一次。这个也是要的
下面代码中出现的:IDC_LIST1为控件中ListBox的ID,
CMultiThreadandsectionDlg为我自己定义的对话框类,这两个自己更换成你自己定义的对话框类
void CMultiThreadandsectionDlg::SetHScroll()
{
HWND hwndDataBox = ::GetDlgItem(g_hwnd,IDC_LIST1);
CDC* dc = GetDC();
SIZE s;
int index;
CString str;
long temp;
for(index= 0; index< ListBox_GetCount(hwndDataBox); index++)
{
ListBox_GetText(hwndDataBox,index,str);
s = dc->GetTextExtent(str,strlen(str)/2+30); // 获取字符串的像素大小,这个你可以自己取长度,不过一定要用strlen()这个函数
// 如果新的字符串宽度大于先前的水平滚动条宽度,则重新设置滚动条宽度
// IDC_LISTBOX为m_List的资源ID
temp = (long)SendDlgItemMessage(IDC_LIST1, LB_GETHORIZONTALEXTENT, 0, 0); //temp得到滚动条的宽度
if (s.cx > temp)
{
SendDlgItemMessage(IDC_LIST1, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
}
}
ReleaseDC(dc);
}
#1
void CSerialCommuncitionDlg::SetHScroll()
{
CDC* dc = GetDC();
SIZE s;
int index;
CString str;
long temp;
for(index= 0; index< m_lstCommunicationInfo.GetCount(); index++)
{
m_lstCommunicationInfo.GetText(index,str);
s = dc->GetTextExtent(str,str.GetLength()+1); // 获取字符串的像素大小
// 如果新的字符串宽度大于先前的水平滚动条宽度,则重新设置滚动条宽度
// IDC_LISTBOX为m_List的资源ID
temp = (long)SendDlgItemMessage(IDC_LIST_COMMUNICATIONINFO, LB_GETHORIZONTALEXTENT, 0, 0); //temp得到滚动条的宽度
if (s.cx > temp)
{
SendDlgItemMessage(IDC_LIST_COMMUNICATIONINFO, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
}
}
ReleaseDC(dc);
}
#2
我的是IDC_LIST1,类是CSend,所以我把IDC_LIST_COMMUNICATIONINFO改成IDC_LIST1,void CSerialCommuncitionDlg::SetHScroll()
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
#3
我的是IDC_LIST1,类是CSend,所以我把IDC_LIST_COMMUNICATIONINFO改成IDC_LIST1,void CSerialCommuncitionDlg::SetHScroll()
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
#4
你每次向ListCtrl添加新的字符串的时候,都要调用这个函数一次。添加一次,然后调用一次。
#5
一直没注意过,学习了
#6
本人也是遇到同样问题,经过很长时间搜索才找到1楼所发的方法,并修改通过了,在此谢谢1楼,为免大家再次受此问题的困扰,发表出来,大家共同学习。
4楼所说的:你每次向ListCtrl添加新的字符串的时候,都要调用这个函数一次。添加一次,然后调用一次。这个也是要的
下面代码中出现的:IDC_LIST1为控件中ListBox的ID,
CMultiThreadandsectionDlg为我自己定义的对话框类,这两个自己更换成你自己定义的对话框类
void CMultiThreadandsectionDlg::SetHScroll()
{
HWND hwndDataBox = ::GetDlgItem(g_hwnd,IDC_LIST1);
CDC* dc = GetDC();
SIZE s;
int index;
CString str;
long temp;
for(index= 0; index< ListBox_GetCount(hwndDataBox); index++)
{
ListBox_GetText(hwndDataBox,index,str);
s = dc->GetTextExtent(str,strlen(str)/2+30); // 获取字符串的像素大小,这个你可以自己取长度,不过一定要用strlen()这个函数
// 如果新的字符串宽度大于先前的水平滚动条宽度,则重新设置滚动条宽度
// IDC_LISTBOX为m_List的资源ID
temp = (long)SendDlgItemMessage(IDC_LIST1, LB_GETHORIZONTALEXTENT, 0, 0); //temp得到滚动条的宽度
if (s.cx > temp)
{
SendDlgItemMessage(IDC_LIST1, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
}
}
ReleaseDC(dc);
}
4楼所说的:你每次向ListCtrl添加新的字符串的时候,都要调用这个函数一次。添加一次,然后调用一次。这个也是要的
下面代码中出现的:IDC_LIST1为控件中ListBox的ID,
CMultiThreadandsectionDlg为我自己定义的对话框类,这两个自己更换成你自己定义的对话框类
void CMultiThreadandsectionDlg::SetHScroll()
{
HWND hwndDataBox = ::GetDlgItem(g_hwnd,IDC_LIST1);
CDC* dc = GetDC();
SIZE s;
int index;
CString str;
long temp;
for(index= 0; index< ListBox_GetCount(hwndDataBox); index++)
{
ListBox_GetText(hwndDataBox,index,str);
s = dc->GetTextExtent(str,strlen(str)/2+30); // 获取字符串的像素大小,这个你可以自己取长度,不过一定要用strlen()这个函数
// 如果新的字符串宽度大于先前的水平滚动条宽度,则重新设置滚动条宽度
// IDC_LISTBOX为m_List的资源ID
temp = (long)SendDlgItemMessage(IDC_LIST1, LB_GETHORIZONTALEXTENT, 0, 0); //temp得到滚动条的宽度
if (s.cx > temp)
{
SendDlgItemMessage(IDC_LIST1, LB_SETHORIZONTALEXTENT, (WPARAM)s.cx, 0);
}
}
ReleaseDC(dc);
}