每个程序都有状态栏上方的滚动条。对?好吧,不是我的。
当我尝试在我的程序中设置自己的滚动条时,我惊讶地让它们工作!所以我设法让状态栏工作了!欢呼! :-) ...但状态栏在滚动条上方,当它应该在滚动条下方。如何移动滚动条?我找不到任何关于移动滚动条的功能。除非我自己创建一个滚动条窗口,但它没有很好地工作(它有一些奇怪的错误:当我使用默认高度时,它变成完全不可见的滚动条,当我使用我定义的高度时,滚动条有Windows98主题或某事o_O !)
这是我的状态栏创建代码:
// Create status bar
hStatus = CreateWindowEx(
0,
STATUSCLASSNAME,
NULL,
WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP,
0, 0, 0, 0,
hWnd,
(HMENU)IDC_MAIN_STATUS,
GetModuleHandle(NULL),
NULL
);
和窗口创建:
if (!(hWnd=CreateWindowEx(dwExStyle, // Extended Style For The Window
"OpenGL", // Class Name
title, // Window Title
dwStyle | // Defined Window Style
WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | WM_HSCROLL | WM_VSCROLL, // Required Window Style
0, 0, // Window Position
WindowRect.right-WindowRect.left, // Calculate Window Width
WindowRect.bottom-WindowRect.top, // Calculate Window Height
NULL, // No Parent Window
NULL, // No Menu
hInstance, // Instance
NULL))) // Dont Pass Anything To WM_CREATE
必须有一些我尚未意识到的巧妙技巧,任何人都可以告诉我如何正确地做到这一点?
答案 0 :(得分:2)
运行记事本并使用spy ++检查它,您将看到带有滚动条的区域和状态栏是两个具有共同父项的对等窗口。您也需要这样做,然后在父窗口改变大小或位置时使用SetWindowPos()将两个窗口相对于彼此定位。