C++ Win32 API GetMessage()

C++ Win32 API GetMessage(),c++,winapi,combobox,getmessage,C++,Winapi,Combobox,Getmessage,我想更改组合框(c++,win32 api)的默认行为。当在编辑控件中输入某个内容时,我使组合框下拉。我希望避免默认行为,即组合框搜索列表中的第一个匹配项,选择它,然后将所选字符串输入编辑控件。我是否可以通过使用GetMessage()从消息队列中捕获相应的(LB_SETCURSEL等)消息来抑制这种行为 有人对如何做有不同的想法吗 问候 您可能希望实现的Michbeck。这允许您将自己的WndProc函数插入在调用控件自己的WndProc之前被调用的combobox控件中。您可以筛选(并删除)

我想更改组合框(c++,win32 api)的默认行为。当在编辑控件中输入某个内容时,我使组合框下拉。我希望避免默认行为,即组合框搜索列表中的第一个匹配项,选择它,然后将所选字符串输入编辑控件。我是否可以通过使用GetMessage()从消息队列中捕获相应的(LB_SETCURSEL等)消息来抑制这种行为

有人对如何做有不同的想法吗

问候
您可能希望实现的Michbeck。这允许您将自己的WndProc函数插入在调用控件自己的WndProc之前被调用的combobox控件中。您可以筛选(并删除)不希望控件获取的窗口消息


我现在并没有启动到我的windows分区,在组合框上运行Spy++来查看它实际接收到的消息。我猜您希望从combobox接收的WM_CHAR中过滤掉。

LB_SETCURSEL
不通过消息队列。要捕捉到这一点,您需要窗口过程中的代码。Thx!我尝试过对编辑控件或列表控件进行子类化,以防止它们在组合框中出现默认行为。子类化工作正常,但我无法获得正确的消息。我试图捕获WM_命令msg或LBN_SELCHANGE,但它不起作用,所以我猜这是错误的。我假设组合框本身向其列表框发送一个LB_SETCURSEL msg,并向编辑控件发送WM_SETTEXT和EM_setel,以执行预期的bevhiour操作。你觉得怎么样?子类化有点棘手。为了捕获WM_命令,必须对父窗口进行子类化。