我正在使用Visual API2008来做一个使用WIN32 C++对话框的C程序,使用宽字符。到目前为止,每个控件都工作正常,但我现在已经通过从工具箱拖放到资源对话框中添加了一个组合框。我已经完成了必要的编码(见下文),但是当我单击Combo Box时,列表似乎没有下拉,或者当我单击Combo Box时列表是空的。但是,最后一项(“项目2")显示在组合框中。我将代码放在WM_INITDIALOG中,而不是WM_CREATE中,因为我的应用程序只包含一个对话框。下面是我的代码的一部分:
LRESULT CALLBACK BasicScanProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HWND hWndComboBox;
switch(uMsg)
{
case WM_INITDIALOG:
hWndComboBox = GetDlgItem(hwnd,IDC_COMBO1); //gets handle
SendMessage(hWndComboBox, CB_ADDSTRING, 0, TEXT("ITEM 1")); //adds items
SendMessage(hWndComboBox, CB_ADDSTRING, 0, TEXT("ITEM 2"));
SendMessage (hWndComboBox, CB_SETCURSEL, (WPARAM) 1, (LPARAM) 0); //display first item
我已经尝试了下面的方法,结果和上面的一样:
SendMessage (hWndComboBox, (UINT) CB_ADDSTRING, (WPARAM) 0, (LPARAM) "ITEM 1");
SendMessage (hWndComboBox, (UINT) CB_ADDSTRING, (WPARAM) 0, (LPARAM) "ITEM 2");
当我单击控件时,如何显示组合框的下拉列表中的两项(项1和项2)?
发布于 2020-03-05 15:03:02
是的,这个问题已经解决了。问题不在编码的任何地方,而是在VISUAL C++的资源编辑器中使用鼠标或箭头键手动调整组合框控件的高度,以同时考虑到拖放(即单击时)下拉列表区的高度加上正常非下拉模式下组合框的正常高度。因此,当您将Combo Box控件放在资源编辑器上时,它的大小(高度)应该大于Combo Box控件的默认高度,因为它的下拉列表区域尚未展开。
更改Combo Box控件的高度有点棘手。当您第一次单击组合框以选择它时,您的鼠标光标不会在第一次单击时更改为向上/向下调整大小箭头。您必须再次单击组合框右端的向下箭头(是的,第二次)。只有这样,您才能获得向上/向下调整大小的箭头。非常感谢@JonathanPotter提供的信息!
https://stackoverflow.com/questions/60518654
复制相似问题