GetComboBoxInfo 返回 false
GetComboBoxInfo returning false
我有一个来自 CComboBox
的派生 class,我想用我派生的 class 子 class CEdit
和 CListCtrl
es.
出于某种原因,当我调用函数 GetComboBoxInfo
时,它返回 false。
下面是我调用函数的方式:
PCOMBOBOXINFO pcbi;
BOOL verif;
verif = GetComboBoxInfo(pcbi);
我试过 this->GetComboBoxInfo(pcbi)
,但还是不行。
我尝试从 CComboBoxEx
中导出我的 class 并使用 GetEditCtrl()
函数,但也没有。
我使用函数 GetLastError()
来捕获错误消息,它给了我 87,也就是 ERROR_INVALID_PARAMETER
,但我不明白为什么。
谢谢。
一个明显的错误是您向 GetComboBoxInfo
函数发送了一个未初始化的指针。
永远不要将未初始化的指针发送给任何函数,除非该函数引用该指针并在函数内部进行初始化/设置。
正如评论所建议的那样,您需要使用 non-pointer 类型,因为 PCOMBOBOXINFO
是指针声明。要使用的类型是 COMBOBOXINFO
:
COMBOBOXINFO cbi {}; // set everything to 0
cbi.size = sizeof(COMBOBOXINFO); // set the size, as per the documentation
BOOL verif;
verif = GetComboBoxInfo(&cbi); // pass the address
我有一个来自 CComboBox
的派生 class,我想用我派生的 class 子 class CEdit
和 CListCtrl
es.
出于某种原因,当我调用函数 GetComboBoxInfo
时,它返回 false。
下面是我调用函数的方式:
PCOMBOBOXINFO pcbi;
BOOL verif;
verif = GetComboBoxInfo(pcbi);
我试过 this->GetComboBoxInfo(pcbi)
,但还是不行。
我尝试从 CComboBoxEx
中导出我的 class 并使用 GetEditCtrl()
函数,但也没有。
我使用函数 GetLastError()
来捕获错误消息,它给了我 87,也就是 ERROR_INVALID_PARAMETER
,但我不明白为什么。
谢谢。
一个明显的错误是您向 GetComboBoxInfo
函数发送了一个未初始化的指针。
永远不要将未初始化的指针发送给任何函数,除非该函数引用该指针并在函数内部进行初始化/设置。
正如评论所建议的那样,您需要使用 non-pointer 类型,因为 PCOMBOBOXINFO
是指针声明。要使用的类型是 COMBOBOXINFO
:
COMBOBOXINFO cbi {}; // set everything to 0
cbi.size = sizeof(COMBOBOXINFO); // set the size, as per the documentation
BOOL verif;
verif = GetComboBoxInfo(&cbi); // pass the address