我想用win32中带垂直滚动条的对话框.对话框内有许多其它控件,操作滚动条可以对所有控件进行浏览.
不过,类似下面的做法好像并不能实现,感觉ScrollWindowEx没什么用,我是否需要自己写对"WM_PAINT"的响应绘出滚动时的显示区域?有哪位大侠做过类似的吗,可不可以说一写大概的思路,有源码参考的话就更好了.
非常感谢.
BOOL CALLBACK DlgDownloadScrollProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg){
case WM_INITDIALOG:
break;
case WM_SIZE:
{
...
}
break;
case WM_VSCROLL:
{
SCROLLINFO scroll_info;
int offset;
int cur_pos;
int nSBCode = (int)LOWORD(wParam); switch (nSBCode) {
case SB_LINEUP:
offset = 1; break;
case SB_LINEDOWN:
offset = -1; break;
case SB_PAGEUP:
offset = cur_pos - scroll_info.nMin; break;
case SB_PAGEDOWN:
offset = scroll_info.nMax - cur_pos; break;
case SB_TOP:
offset = cur_pos - scroll_info.nMin;
break;
case SB_BOTTOM:
offset = scroll_info.nMax - cur_pos;
break;
case SB_THUMBTRACK:
offset = cur_pos - scroll_info.nTrackPos;
break;
default:
offset = 0;
break;
}; ScrollWindowEx(hwndDlg, 0, offset, NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN);
UpdateWindow(hwndDlg);
SetScrollPos(hwndDlg, SB_VERT, cur_pos - offset,TRUE);
}
break;
}
不过,类似下面的做法好像并不能实现,感觉ScrollWindowEx没什么用,我是否需要自己写对"WM_PAINT"的响应绘出滚动时的显示区域?有哪位大侠做过类似的吗,可不可以说一写大概的思路,有源码参考的话就更好了.
非常感谢.
BOOL CALLBACK DlgDownloadScrollProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg){
case WM_INITDIALOG:
break;
case WM_SIZE:
{
...
}
break;
case WM_VSCROLL:
{
SCROLLINFO scroll_info;
int offset;
int cur_pos;
int nSBCode = (int)LOWORD(wParam); switch (nSBCode) {
case SB_LINEUP:
offset = 1; break;
case SB_LINEDOWN:
offset = -1; break;
case SB_PAGEUP:
offset = cur_pos - scroll_info.nMin; break;
case SB_PAGEDOWN:
offset = scroll_info.nMax - cur_pos; break;
case SB_TOP:
offset = cur_pos - scroll_info.nMin;
break;
case SB_BOTTOM:
offset = scroll_info.nMax - cur_pos;
break;
case SB_THUMBTRACK:
offset = cur_pos - scroll_info.nTrackPos;
break;
default:
offset = 0;
break;
}; ScrollWindowEx(hwndDlg, 0, offset, NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN);
UpdateWindow(hwndDlg);
SetScrollPos(hwndDlg, SB_VERT, cur_pos - offset,TRUE);
}
break;
}
解决方案 »
- mfc sdi中框架与视图的通信
- 哪位大侠能给我讲讲这句代码?COleVariant(_variant_t(strFileName))
- 帮改错!谢谢!
- 求位图单象素操作方法(无奈中)
- 客户端访问com组件有哪3中方法?
- 请问,如何设置程序的当前路径,————在线等待。
- 为什么在编译的时候出现 C1083 的错误?
- 求教,如何用VC编程读取Excel文件中某一个sheet的指定行列的单元格内容?请赐教!
- 如何在VC中调用excel对象?
- ????????一个初学者的小问题,我想在对话框中显示数据库中的数据,应如何做?多给分.................
- 关于子类化问题
- 打印报表程序 如何在使用TPrinter::EndDoc 之后直接打印 而不是要把系统的打印设置调出来?
http://support.microsoft.com/kb/262954