使用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);