如何将窗口默认滚动条移到状态栏上方?

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() 将两个窗口相对于彼此定位。

【讨论】:

以上是关于如何将窗口默认滚动条移到状态栏上方?的主要内容,如果未能解决你的问题,请参考以下文章

状态栏上方的导航栏

如何在导航栏上方制作标题?

php鼠标移到按钮上总会在浏览器状态栏显示php文件的完整路径,怎么隐藏这路径

华为状态栏怎么变黑色

将 UIView 或 UIWindow 放在状态栏上方

如何使按下状态栏滚动到任何 UITableView 的顶部?