• 如何让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;

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

  • 相关阅读:
    对 Spring IoC 的理解
    初识 Spring 框架
    CSS 全局样式
    Bootstrap 12 栅格系统
    551 闭包,浏览器垃圾回收机制/内存收机制
    550 JavaScript运行机制之“堆栈”
    549 数据类型转换汇总:转换为Number、字符串、布尔,比 较操作==、===,练习题
    547 Promise:Ajax 的串行、并行, Promise的executor和状态,then、catch、finally,then链
    546 变量提升
    545 parseInt解析
  • 原文地址:https://www.cnblogs.com/ITBread/p/3658286.html
Copyright © 2020-2023  润新知