有没有用SDK编程的,请教一个问题。是学SDK的都来支持一下啊!关于如何从ListView中建立的combobox中取数的问题。
详细说明如下:
我的主窗口中有一个ListView,那么我根据主窗口是否有变化,并判断是不是ListView引起。而后根据不同的消息进行不同的处理,如下:
LRESULT CALLBACK MainWndProc( HWND hwnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
{.............
case WM_NOTIFY: //如果MainWnd有变化
if(ID_LISTVIEW == wParam)//并且是ListView引起
{
lResult = OnListViewNotify(hwnd, lParam);//处理这个ListView引起的消息lParam
}
也就是说,这些消息的处理必须放到控件的父窗口进行处理。
而现在,我在ListView的一个subItem的位置建立了一个combobox,如下:
LRESULT OnListViewNotify( HWND hwnd,LPARAM lParam)
{
NMHDR* pnmh = (NMHDR*) lParam;
LRESULT lResult = 0;
NMLVDISPINFO *pLVdi;
case LVN_ITEMACTIVATE://当我点击某一行时
..........................//得到行的信息,比如高度,列数,此处略去
if(IsCombo(col))//如果是需要画combobox的那一列
{
if (!(hwndCombo = CreateWindowEx (0, TEXT("combobox"),NULL,
dwStyle, SubItemRect.left,SubItemRect.top,
150,600,g_hwndListView, (HMENU)ID_COMBOBOX, g_hInst, NULL)))
return NULL;
// // Add 10 items to the combo box.//下面是给这个combobox加入10个item.
现在的问题就是,如果我的这个combobox有消息发生,那么应该是在他的父窗口接受并处理,但是他的父窗口ListView(g_hwndListView)建立时和mainWnd不同,没有回调函数,主要是没有带lparam这个参数,
试过用 LVN_ITEMCHANGED:来进行处理,但是这个消息会在点击ListView,而其中内容还未改变时就发出,太灵敏了。
所有的问题兜详细解释如上,请指点。