我的listbox不是通过create生成的,而是通过直接添加构件生成的,它的属性里我勾了水平滚动,但没用,还是显示不出,
网上查了一下,好像要加代码,但我不知道加到哪里?怎么加?请高手赐教!望给出具体方法!谢过!
网上查了一下,好像要加代码,但我不知道加到哪里?怎么加?请高手赐教!望给出具体方法!谢过!
解决方案 »
- 如何在mfc中实现将Excel表中的数据导入到sql2000数据库中
- VS 2005 属性窗口下面的说明怎么没有了?
- VC 里面_RecordsetPtr DataGrid碰到个问题 急,在线等
- atof((LPCTSTR)"0.02") 为什么结果为0,请那位兄台给与帮助
- 事件中的问题:奇怪了!!!
- 如何用SendInput模拟键盘的组合键使用?
- 对话框扩大,相应的控件也自适应扩大!这个功能怎么实现?--火烧眉毛!
- 进程间通信
- 调用::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED)出错
- windows api参数的传递是否涉及到内核空间和用户空间之间的传递呢?
- 获取“外接”硬盘硬盘物理序列号!
- _AFX_INLINE CArchive& AFXAPI operatior<<(CArchive& ar,const CObject* pOb) 重载了
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);
}
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
改成void CSend::SetHScroll(),编译是通过了,但效果没有,没有出现传说中的滚动条。
顺便说一下,我的listbox是用来存放添加附件的地址的,当我附件的路径字符串长超过listbox一行的长度时,一部分字符就读不进来了,所以
我要加滚动条。
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);
}