zoukankan      html  css  js  c++  java
  • 如何让win32对话框居中显示

    在编写win32对话框程序,如果是用visual studio建的win32对话框程序,默认是不居中显示的,about 对话框也是这样的,用资源编辑器打开,可以在属性里面设置居中center 为ture,因为win32资源文件是文本型,因此可以用记事本打开,

    IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
    STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU

    然后又将about对话框center 设置为false

    IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
    STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU

     

    发现

    STYLE里面少了| DS_CENTER

    由此可以得知,win32对话框程序是否居中有样式 DS_CENTER 控制,然后回到win32对话框程序代码中,找到以下函数

    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
        WNDCLASSEX wcex;

        wcex.cbSize = sizeof(WNDCLASSEX);

       wcex.style            = CS_HREDRAW | CS_VREDRAW;
        wcex.lpfnWndProc    = WndProc;
        wcex.cbClsExtra        = 0;
        wcex.cbWndExtra        = 0;
        wcex.hInstance        = hInstance;
        wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TESTCPP));
        wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
        wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
        wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_TESTCPP);
        wcex.lpszClassName    = szWindowClass;
        wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

        return RegisterClassEx(&wcex);
    }

     

    将 wcex.style = CS_HREDRAW | CS_VREDRAW;

    改为 wcex.style = CS_HREDRAW | CS_VREDRAW| DS_CENTER;”S_VREDRAW| DS_CENTER;

    然后再重写编译,居中显示啦。

  • 相关阅读:
    WebSphere ssl证书公钥少于2048问题处理
    zookeeper安装教程(zookeeper3.4.5为例)
    jetty安装教程
    redis sentinel哨兵模式集群搭建教程
    redis安装教程
    物联网、大数据、云计算的区别与联系
    weblogic隐藏版本号教程(10.3.6为例)
    weblogic补丁安装失败(Patch B25A is mutually exclusive and cannot coexist with patch(es): UIAL)
    was重要文件位置备忘
    FileZilla Server隐藏版本号教程
  • 原文地址:https://www.cnblogs.com/ITBread/p/3658286.html
Copyright © 2011-2022 走看看