怎么设置 CComboBox下拉列表的长度!!!

女神打Boss 2016-02-17 04:49:34
如图我运行之后情况是这样的
我已经在可视化视图中做了这个操作 “点击向下的箭头,会出来一个框,可以拖拽改变大小”
如图
这个大小足够大了吧
我的项目属性是 多字节字符集,编译器是vs2010
求解决办法
...全文
1419 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
richrising123 2017-06-21
  • 打赏
  • 举报
回复 1
这样就能解决:鼠标放到控件向下的箭头上,鼠标变成上下双向箭头,单击后出现一个矩形,向下拉大这个矩形。
女神打Boss 2016-03-01
  • 打赏
  • 举报
回复
正确答案在12楼
schlafenhamster 2016-02-18
  • 打赏
  • 举报
回复
lsibox 的 放大? CComboBox::GetDroppedControlRect void GetDroppedControlRect( LPRECT lprect ) const; Parameters lprect Points to the RECT structure that is to receive the coordinates. Remarks Call the GetDroppedControlRect member function to retrieve the screen coordinates of the visible (dropped-down) list box of a drop-down combo box.
女神打Boss 2016-02-18
  • 打赏
  • 举报
回复
引用 11 楼 CKRGD 的回复:
谢谢各位大大关注,我先贴下我的代码 //求控件放大倍数

	CRect rect;
	int rx, ry;
	GetParent()->GetClientRect(&m_rectdlg);//父窗口客户区大小
	GetParent()->GetDlgItem(AFX_IDW_TOOLBAR)->GetWindowRect(m_recttoolbar);//菜单栏屏幕坐标
	ScreenToClient(m_recttoolbar);//转换为客户坐标
	GetWindowRect(&rect);//本子窗口屏幕坐标
	rx = rect.Width();//获取子对话框高度与宽度
	ry = rect.Height();
	//父亲窗口客户区宽度(高度) / 子窗口客户区宽度(高度)
	m_Multiple_width = float(m_rectdlg.Width()) / float(rx);
	//高度需考虑菜单栏和状态栏
	m_Mutiple_heith = float(m_rectdlg.Height() - m_recttoolbar.Height() - 20) / float(ry-20);
//添加onSize函数改变控件大小和位置

	CRect Rect;
	GetDlgItem(nID)->GetWindowRect(Rect);
	ScreenToClient(Rect); 
	//计算控件左上角点 
	CPoint OldTLPoint, TLPoint; 
	OldTLPoint = Rect.TopLeft(); 
	TLPoint.x = long(OldTLPoint.x * m_Multiple_width); 
	TLPoint.y = long(OldTLPoint.y * m_Mutiple_heith);
	////计算控件右下角点
	CPoint OldBRPoint, BRPoint; 
	OldBRPoint = Rect.BottomRight(); 
	BRPoint.x = long(OldBRPoint.x * m_Multiple_width); 
	BRPoint.y = long(OldBRPoint.y * m_Mutiple_heith); 
	Rect.SetRect(TLPoint, BRPoint);
	GetDlgItem(nID)->MoveWindow(Rect, TRUE);
暂时代码修改为 只改变位置不改变大小

                //Rect.SetRect(TLPoint, BRPoint);
                //GetDlgItem(nID)->MoveWindow(Rect, TRUE);
		CWnd *pWnd;
		pWnd = GetDlgItem(nID);//获取控件指针,IDC_BUTTON1为控件ID号
		pWnd->SetWindowPos(NULL, TLPoint.x, TLPoint.y, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
女神打Boss 2016-02-18
  • 打赏
  • 举报
回复
谢谢各位大大关注,我先贴下我的代码 //求控件放大倍数

	CRect rect;
	int rx, ry;
	GetParent()->GetClientRect(&m_rectdlg);//父窗口客户区大小
	GetParent()->GetDlgItem(AFX_IDW_TOOLBAR)->GetWindowRect(m_recttoolbar);//菜单栏屏幕坐标
	ScreenToClient(m_recttoolbar);//转换为客户坐标
	GetWindowRect(&rect);//本子窗口屏幕坐标
	rx = rect.Width();//获取子对话框高度与宽度
	ry = rect.Height();
	//父亲窗口客户区宽度(高度) / 子窗口客户区宽度(高度)
	m_Multiple_width = float(m_rectdlg.Width()) / float(rx);
	//高度需考虑菜单栏和状态栏
	m_Mutiple_heith = float(m_rectdlg.Height() - m_recttoolbar.Height() - 20) / float(ry-20);
//添加onSize函数改变控件大小和位置

	CRect Rect;
	GetDlgItem(nID)->GetWindowRect(Rect);
	ScreenToClient(Rect); 
	//计算控件左上角点 
	CPoint OldTLPoint, TLPoint; 
	OldTLPoint = Rect.TopLeft(); 
	TLPoint.x = long(OldTLPoint.x * m_Multiple_width); 
	TLPoint.y = long(OldTLPoint.y * m_Mutiple_heith);
	////计算控件右下角点
	CPoint OldBRPoint, BRPoint; 
	OldBRPoint = Rect.BottomRight(); 
	BRPoint.x = long(OldBRPoint.x * m_Multiple_width); 
	BRPoint.y = long(OldBRPoint.y * m_Mutiple_heith); 
	Rect.SetRect(TLPoint, BRPoint);
	GetDlgItem(nID)->MoveWindow(Rect, TRUE);
zgl7903 2016-02-18
  • 打赏
  • 举报
回复
SetWindowPos 时 加 SWP_NOSIZE , 改变大小用 CComboBox::SetItemHeight
paschen 2016-02-17
  • 打赏
  • 举报
回复
引用 楼主 CKRGD 的回复:
这个大小足够大了吧
求解决办法


不够!!

你拉成这样:

孤客天涯 2016-02-17
  • 打赏
  • 举报
回复
对Combox控件MoveWindow的时候需要计算下拉框的大小
女神打Boss 2016-02-17
  • 打赏
  • 举报
回复
引用 4 楼 CKRGD 的回复:
[quote=引用 3 楼 jason_wentzel 的回复:] 我已经在可视化视图中做了这个操作 “点击向下的箭头,会出来一个框,可以拖拽改变大小” 你是怎么拖的? 另外,你是不是对combox进行了MoveWindow操作?
鼠标放到控件向下的箭头上,鼠标变成上下双向箭头,单击后出现一个矩形,向下拉大这个矩形 不管拉多大运行都没有效果,combox的No Integral Height属性修改成了true,用过SetWindowPos函数修改过combox的大小, 注释SetWindowPos后显示正常,但是我需要SetWindowPos来改变控件位置,该怎么办,才能兼顾[/quote]看错了,我用的MoveWindow函数改变了combox的大小和位置,该怎么兼顾呢
schlafenhamster 2016-02-17
  • 打赏
  • 举报
回复
上你的代码吧
Eleven 2016-02-17
  • 打赏
  • 举报
回复
引用 4 楼 CKRGD 的回复:
[quote=引用 3 楼 jason_wentzel 的回复:] 我已经在可视化视图中做了这个操作 “点击向下的箭头,会出来一个框,可以拖拽改变大小” 你是怎么拖的? 另外,你是不是对combox进行了MoveWindow操作?
鼠标放到控件向下的箭头上,鼠标变成上下双向箭头,单击后出现一个矩形,向下拉大这个矩形 不管拉多大运行都没有效果,combox的No Integral Height属性修改成了true,用过SetWindowPos函数修改过combox的大小, 注释SetWindowPos后显示正常,但是我需要SetWindowPos来改变控件位置,该怎么办,才能兼顾[/quote] 可以先GetWIndowRect,然后在MoveWIndow/SetWindowPos
女神打Boss 2016-02-17
  • 打赏
  • 举报
回复
引用 3 楼 jason_wentzel 的回复:
我已经在可视化视图中做了这个操作 “点击向下的箭头,会出来一个框,可以拖拽改变大小” 你是怎么拖的? 另外,你是不是对combox进行了MoveWindow操作?
鼠标放到控件向下的箭头上,鼠标变成上下双向箭头,单击后出现一个矩形,向下拉大这个矩形 不管拉多大运行都没有效果,combox的No Integral Height属性修改成了true,用过SetWindowPos函数修改过combox的大小, 注释SetWindowPos后显示正常,但是我需要SetWindowPos来改变控件位置,该怎么办,才能兼顾
孤客天涯 2016-02-17
  • 打赏
  • 举报
回复
我已经在可视化视图中做了这个操作 “点击向下的箭头,会出来一个框,可以拖拽改变大小” 你是怎么拖的? 另外,你是不是对combox进行了MoveWindow操作?
女神打Boss 2016-02-17
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
不够大的时候好象会自动出现滚动条的吧。
这不是滚动条的问题,明显的bug
赵4老师 2016-02-17
  • 打赏
  • 举报
回复
不够大的时候好象会自动出现滚动条的吧。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧