如何将窗口默认滚动条移到状态栏上方?
Posted
技术标签:
【中文标题】如何将窗口默认滚动条移到状态栏上方?【英文标题】:How to move the window default scrollbar above the status bar? 【发布时间】:2009-03-07 22:54:55 【问题描述】:每个程序的状态栏上方都有滚动条。对?好吧,不是我的。
当我尝试在我的程序中设置我自己的滚动条时,我惊讶地让它们工作了!我也设法让状态栏工作了!欢呼! :-) ...但是状态栏在滚动条上方,而它应该在滚动条下方。如何移动滚动条?我找不到有关移动滚动条的任何功能。除非我自己创建了一个滚动条窗口,但这并没有很好地工作(它有一些奇怪的错误:当我使用默认高度时,它变成完全不可见的滚动条,当我使用我定义的高度时,滚动条有 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
一定有一些我还没有意识到的巧妙技巧,有人告诉我如何正确地做到这一点吗?
【问题讨论】:
【参考方案1】:运行记事本并使用 spy++ 检查它,您会看到带有滚动条和状态栏的区域是两个具有共同父级的对等窗口。您也需要这样做,然后在父窗口大小或位置发生变化时使用 SetWindowPos() 将两个窗口相对于彼此定位。
【讨论】:
以上是关于如何将窗口默认滚动条移到状态栏上方?的主要内容,如果未能解决你的问题,请参考以下文章