如何让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;
然后再重写编译,居中显示啦。       
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号