c – 使用CB_SETCURSEL时如何发送CBN_SELCHANGE消息?

使用CB_SETCURSEL消息时,不会发送CBN_SELCHANGE消息.

如何通知控件选择已更改?

附:

我在Sexchange网站上发现了一个非常丑陋的黑客:

SendMessage( hwnd, 0x014F/*CB_SHOWDROPDOWN*/, 1, 0 );
SendMessage( hwnd, 0x014E/*CB_SETCURSEL*/, ItemIndex, 0 );
SendMessage( hwnd, 0x0201/*WM_LBUTTONDOWN*/, 0, -1 );
SendMessage( hwnd, 0x0202/*WM_LBUTTONUP*/, 0, -1 );

现在会做…不是真的.

P.S.2

为了解决我的问题,我会在评论中遵循Ken的建议.

解决方法:

除非用户做出选择更改,否则您不应使用CBN_SELCHANGE.

您没有说明您正在使用的语言;如果您这样做,它将使您更容易为您提供解决方法.

在Delphi中,OnChange()将与组合框关联,您只需直接调用event方法:

// Send the CB_SETCURSEL message to the combobox
PostMessage(ComboBox1.Handle, CB_SETCURSEL, Whatever, WhateverElse);

// Directly call the OnChange() handler, which is the equivalent to CBN_SELCHANGE
ComboBox1Change(nil);
上一篇:在 combobox上栽的二次跟头!!


下一篇:java – 什么是Swing – 相当于HTML