m_hWndList = CreateWindowEx(0, WC_LISTVIEW,
WC_LISTVIEW,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_SINGLESEL,
0,
0,
rc.right,
rc.bottom-1,
m_hWnd,
NULL,
GetEmbApp()->GetInstance(),
NULL
);
这样创建了个listview,当加入的数据多过一屏幕的时候,就会有滚动条。我一屏幕显示3个数据,设计好的。
现在的问题是,当我数据多了的时候比如有8条记录了。
当我点击右的时候,他移动的是一个字节一个字节移动。这样的话特别慢,点了好就了才移动了一个数据。
我如何实现让他翻页或者点一下就移动一条数据也行。。 怎么做呢,用什么来响应键盘左右呢?
我是win32,mobile的。谢谢各位了
WC_LISTVIEW,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_SINGLESEL,
0,
0,
rc.right,
rc.bottom-1,
m_hWnd,
NULL,
GetEmbApp()->GetInstance(),
NULL
);
这样创建了个listview,当加入的数据多过一屏幕的时候,就会有滚动条。我一屏幕显示3个数据,设计好的。
现在的问题是,当我数据多了的时候比如有8条记录了。
当我点击右的时候,他移动的是一个字节一个字节移动。这样的话特别慢,点了好就了才移动了一个数据。
我如何实现让他翻页或者点一下就移动一条数据也行。。 怎么做呢,用什么来响应键盘左右呢?
我是win32,mobile的。谢谢各位了
消息的响应处理都这么实现呢?
case WM_CREATE:
{ // 创建列头
RECT rcMenuBar;
GetWindowRect(g_hWndMenuBar, &rcMenuBar);
RECT rect;
GetClientRect(hWnd,&rect); rect.bottom -= (rcMenuBar.bottom - rcMenuBar.top);
hWndList = CreateWindow(WC_LISTVIEW,
WC_LISTVIEW,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_SINGLESEL,
0,
0,
rect.right,
rect.bottom-1, // <--这里如果写rect.bottom,就不会响应WM_PAINT了,我是在WM_PAINT里面添加数据,等等的。如何才能做一个真正的自己的listview呢?
hWnd,
NULL,
g_hInst,
NULL
);
.....
}这样做了,响应的都是主窗口的消息吧,要怎么做才响应自己的呢?
listview的scrollbar的处理,请参看潘爱民翻译的<vc++6.0技术内幕>,或<programming windows with MFC>内有示例.