MFC应用程序中的组合框

时间:2017-10-20 09:11:23

标签: combobox mfc dropdown

我的问题是关于Windows MFC应用程序中的组合框。

组合框的下拉部分包含由位图和字符串组成的项目。

有时,字符串太长,我必须使用SQL*Plus: Release 12.2.0.1.0 Production on Thu Oct 12 10:48:43 2017 Copyright (c) 1982, 2016, Oracle. All rights reserved. Last Successful login time: Tue Oct 10 2017 22:52:08 +02:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> create table test_json(JSON_COLUMN clob, CONSTRAINT ensure_json CHECK (JSON_COLUMN is json)); Table created. SQL> insert into test_json values('[{"id":"14843"},{"id":"14103"},{"id":"16632"},{"id":"14776"},{"id":"14658"},{"id":"14426"},{"id":"14838"},{"id":"14834"},{"id":"14804"},{"id":"14803"},{"id":"14802"},{"id":"14801"},{"id":"14779"},{"id":"14767"},{"id":"16013"},{"id":"15980"},{"id":"15979"},{"id":"15978"},{"id":"15977"},{"id":"15976"},{"id":"15975"},{"id":"15974"},{"id":"15973"},{"id":"15972"},{"id":"15971"},{"id":"15970"},{"id":"15969"},{"id":"15968"},{"id":"15967"},{"id":"15966"},{"id":"15965"},{"id":"15964"},{"id":"15963"},{"id":"15962"},{"id":"15961"},{"id":"15960"},{"id":"16012"},{"id":"15903"}]'); 1 row created. SQL> commit; Commit complete. SQL> SELECT * FROM test_json WHERE json_exists(JSON_COLUMN, '$.id?(@ == 16632)'); JSON_COLUMN -------------------------------------------------------------------------------- [{"id":"14843"},{"id":"14103"},{"id":"16632"},{"id":"14776"},{"id":"14658"},{"id 方法调整组合框下拉部分的宽度。

我的问题是,当组合框靠近计算机屏幕的右边缘时,下拉列表的右侧部分将被隐藏(请参阅下面的CComboBox::SetDroppedWidth()image_1)。

我希望它在Excel中表现得像(参见下面的image_2),这意味着我希望相应地移动下拉列表,以便可以看到所有项目而不会被裁剪。

如何实现这一目标?

image_1:下拉列表的右侧部分未隐藏 right part of the dropdown is NOT hidden

image_2:靠近计算机右边缘,下拉列表的右侧部分是隐藏的 right part of the dropdown is hidden

image_3:Excel组合框 Excel combo box

=============================================== ==================

编辑1 handles are null

=============================================== ==================

编辑2

确定。我忘了提到image_3m_cbXmodels个对象。这就是句柄为NULL的原因。我可以通过CComboBoxEx ...

获取句柄

1 个答案:

答案 0 :(得分:3)

处理CBN_DROPDOWN通知。

使用GetComboBoxInfo获取列表控件的句柄。

现在使用MoveWindow根据需要调整窗口。

MonitorFromWindow可以获取当前屏幕尺寸。请参阅rcWork中的MONITORINFO成员。你只需要调整左右坐标。

编辑:正如您可以在评论中看到的:我的方法与CBN_DROPDOWN是早期感谢zett42)。此处无法调整组合框列表部分的大小。
但是可以将用户定义的消息发布到同一窗口并重新定位窗口。