1.CreateWindow

2.CreateWindowEx

-----------

一种方法是在WinMain方法中创建,注意要把CreateWindow函数的hWndParent参数设置为窗口的句柄。

 

二种方法,我们知道,在窗口创建后,显示之前,即CreateWindow函数返回之前,我们会收到WM_CREATE消息,我们响应它的号召,创建一个按钮。

------------------

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND BS_hwnd;
    HWND hwndButton1;
    HWND hwndButton2;
    HWND hwndButton3;
    HWND hwndButton4;
    HWND hwndButton5;
    HWND hwndButton6;
    HWND hwndButton7;
    switch (message)
    {
    case WM_CREATE:
#if 0
    

        BS_hwnd = CreateWindow(TEXT("button"), //类别
            L"TESTBUTTON",//按钮上的文本
            WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,//样式
            400, 10,//相对的起始坐标
            150, 25,//宽,高
            hWnd, (HMENU)1,//可以通过LOWORD (wParam)来获取,识别哪个按钮发送消息,当然还有其它方式
            ((LPCREATESTRUCT)lParam)->hInstance, NULL);
        break;
#else
        {
             
            hwndButton1=CreateWindow(TEXT("button"), L"计算器", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                35, 10, 160, 60, hWnd, (HMENU)IDB_ONE, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
            ShowWindow(hwndButton1, true);
            hwndButton2=CreateWindow(TEXT("button"), L"画图", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                35, 80, 160, 60, hWnd, (HMENU)IDB_TWO, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
            ShowWindow(hwndButton2, true);
            hwndButton3=CreateWindow(TEXT("button"), L"记事本", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                35, 150, 160, 60, hWnd, (HMENU)IDB_THREE, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
            ShowWindow(hwndButton3, true);
            hwndButton4 = CreateWindow(TEXT("button"), L"cmd", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                35, 220, 160, 60, hWnd, (HMENU)IDB_FOUR, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
            ShowWindow(hwndButton4, true);
            hwndButton5 = CreateWindow(TEXT("button"), L"远程桌面", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                35, 290, 160, 60, hWnd, (HMENU)IDB_FIVE, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
            ShowWindow(hwndButton5, true);
            hwndButton6 = CreateWindow(TEXT("button"), L"放大镜", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                35, 360, 160, 60, hWnd, (HMENU)IDB_SIX, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
            ShowWindow(hwndButton6, true);
        }
        break;
#endif    

 case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 分析菜单选择:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            case IDB_ONE:
            
                WinExec("calc.exe", SW_SHOW);
                break;

            case IDB_TWO:
         
                WinExec("mspaint.exe", SW_SHOW);
                break;

            case IDB_THREE:
            
                WinExec("notepad.exe", SW_SHOW);
            
                break;
            case IDB_FOUR:
            
                WinExec("cmd.exe", SW_SHOW);
     
                break;
            case IDB_FIVE:
              
                WinExec("mstsc.exe", SW_SHOW);
                
                break;
            case IDB_SIX:
              
                WinExec("magnify.exe", SW_SHOW);
                
                break;

----------------

win_api_8_创建窗口和控件_button_系统调用

参考文献

1.https://blog.csdn.net/jiangqin115/article/details/78385681

2.https://www.cnblogs.com/tangqs/archive/2011/09/18/2180421.html

相关文章: