zoukankan      html  css  js  c++  java
  • win32 hello

    #include <windows.h>
    #include <WinUser.h>
    #include <CommCtrl.h>
    #include "controlid.h"
    #include "globallists.h"
    #include <cwchar>
    #include <vector>
    
    //----------------------------------------------------
    //BS_PUSHBUTTON
    //----------------------------------------------------
    void CreatePushButton(const HWND &ParentHwnd)
    {
        CreateWindow(
            L"Button",
            L"文本",
            WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
            10,10,90,30,
            ParentHwnd,
            (HMENU)PUSHBUTTONID,
            (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),
            NULL);
    }
    
    void HandlePushButtonMessage(const HWND &ParentHwnd, const UINT &Message, const WPARAM &WParam, const LPARAM &LParam)
    {
        switch(Message)
        {
        case WM_COMMAND:
            switch(LOWORD(WParam))
            {
                case PUSHBUTTONID:
                    switch(HIWORD(WParam))
                    {
                        case BN_CLICKED:
                            HRESULT messageboxResult=MessageBox(ParentHwnd,L"消息",L"标题",MB_ICONEXCLAMATION|MB_YESNO);
                            switch(messageboxResult)
                            {
                            case IDYES:
                                MessageBox(ParentHwnd,L"点击了"是"",L"标题",NULL);
                                break;
                            case IDNO:
                                MessageBox(ParentHwnd,L"点击了"否"",L"标题",NULL);
                                break;
                            }
                        break;
                    }    
            }
            break;
        }
    
    }
    
     //----------------------------------------------------
     //BS_AUTO3STATE
     //----------------------------------------------------
     void CreateAuto3StateButton(const HWND &ParentHwnd)
     {
         CreateWindow(
             L"Button",
             L"文本",
             WS_VISIBLE | WS_CHILD | BS_AUTO3STATE,
             10,50,90,30,
             ParentHwnd,
             (HMENU)AUTO3STATEBUTTONID,
             (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),
             NULL
             );
         //默认设置为未选定
         SendMessage(GetDlgItem(ParentHwnd,AUTO3STATEBUTTONID),BM_SETCHECK,BST_INDETERMINATE,0);
     }
     
     void HandleAuto3StateButtonMessage(const HWND &ParentHwnd, const UINT &Message, const WPARAM &WParam, const LPARAM &LParam)
     {
         switch (Message)
         {
         case WM_COMMAND:
             switch(LOWORD(WParam))
             {
             case AUTO3STATEBUTTONID:
                 switch(HIWORD(WParam))
                 {
                 case BN_CLICKED:
                     UINT state=SendMessage(GetDlgItem(ParentHwnd,AUTO3STATEBUTTONID), BM_GETCHECK ,0,0);
                     switch(state)
                     {
                     case BST_CHECKED:
                         MessageBox(ParentHwnd,L"选择状态",L"标题",NULL);
                         break;
                     case BST_INDETERMINATE:
                         MessageBox(ParentHwnd,L"未定状态",L"标题",NULL);
                         break;
                     case BST_UNCHECKED:
                         MessageBox(ParentHwnd,L"未选择状态",L"标题",NULL);
                         break;
                     }
                     break;
                 }    
             }
             break;
         }
     }
     
     //----------------------------------------------------
     //BS_AUTOCHECKBOX
     //----------------------------------------------------
     void CreateAutoCheckBox(const HWND &ParentHwnd)
     {
         CreateWindow(
             L"Button",
             L"文本",
             WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
             10,90,90,30,
             ParentHwnd,
             (HMENU)AUTOCHECKBUTTONID,
             (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),
             NULL
             );
     }
    
     void HandleAutoCheckBoxMessage(const HWND &ParentHwnd, const UINT &Message, const WPARAM &WParam, const LPARAM &LParam)
     {
         switch(Message)
         {
         case WM_COMMAND:
             switch(LOWORD(WParam))
             {
             case AUTOCHECKBUTTONID:
                 switch(HIWORD(WParam))
                 {
                 case BN_CLICKED:
                     UINT state=SendMessage(GetDlgItem(ParentHwnd,AUTOCHECKBUTTONID), BM_GETCHECK ,0,0);
                     switch(state)
                     {
                     case BST_CHECKED:
                         MessageBox(ParentHwnd,L"选择状态",L"标题",NULL);
                         break;
                     case BST_UNCHECKED:
                         MessageBox(ParentHwnd,L"未选择状态",L"标题",NULL);
                         break;
                     }
                     break;
                 }    
             }
             break;
         }
     }
     //----------------------------------------------------
     //BS_GROUPBOX BS_AUTORADIOBUTTON
     //----------------------------------------------------
     
     void CreateRadioButtonGroup(const HWND &ParentHwnd)
     {
         CreateWindow(
             L"Button",
             L"文本",
             WS_VISIBLE | WS_CHILD | BS_GROUPBOX,
             10,130,80,90,
             ParentHwnd,
             (HMENU)GROUPBOXID,
             (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),
             NULL
             );
    
         CreateWindow(
             L"Button",
             L"文本1",
             WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON|WS_GROUP,
             15,150,60,20,
             ParentHwnd,
             (HMENU)AUTORADIOBUTTON1ID,
             (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),
             NULL
             );
         CreateWindow(
             L"Button",
             L"文本2",
             WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
             15,170,60,20,
             ParentHwnd,
             (HMENU)AUTORADIOBUTTON2ID,
             (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),
             NULL
             );
         CreateWindow(
             L"Button",
             L"文本3",
             WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON,
             15,190,60,20,
             ParentHwnd,
             (HMENU)AUTORADIOBUTTON3ID,
             (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),
             NULL
             );
    
         //设置第二个为默认选中
         SendMessage(GetDlgItem(ParentHwnd,AUTORADIOBUTTON2ID),BM_SETCHECK,BST_CHECKED,0);
     }
     
     void HandleRadioButtonGroupMessage(const HWND &ParentHwnd, const UINT &Message, const WPARAM &WParam, const LPARAM &LParam)
     {
         UINT buttons[3]={AUTORADIOBUTTON1ID,AUTORADIOBUTTON2ID,AUTORADIOBUTTON3ID};
         switch(Message)
         {
         case WM_COMMAND:
             switch(LOWORD(WParam))
             {
                case AUTORADIOBUTTON1ID:
                case AUTORADIOBUTTON2ID:
                case AUTORADIOBUTTON3ID:
                    for (INT i=0;i<3;i++)
                    {
                        if (BST_CHECKED==SendMessage(GetDlgItem(ParentHwnd,buttons[i]), BM_GETCHECK ,0,0))
                        {
                            wchar_t buf[30];
                            std::swprintf(buf,29,L"单选按钮%d",i+1);
                            MessageBox(ParentHwnd,buf,L"标题",NULL);
                        }
                    }
                    break;
             }
             break;
         }
     }
    
     //----------------------------------------------------
     //TRACKBAR_CLASS  STATIC
     //----------------------------------------------------
     void CreateTrackBar(const HWND &ParentHwnd)
     {
         //范围过大的时候可能出现问题
            HWND hwndDlg=ParentHwnd;    // handle of dialog box (parent window) 
            UINT iMin=-100;                // minimum value in trackbar range 
            UINT iMax=20000;            // maximum value in trackbar range 
    
            HWND hwndTrack = CreateWindow( 
                 TRACKBAR_CLASS,                    // class name 
                 L"Trackbar Control",                // title (caption) 
                 WS_CHILD | 
                 WS_VISIBLE | TBS_TOOLTIPS|
                 TBS_AUTOTICKS,                    // style 
                 30, 230,                        // position 
                 200, 40,                       // size 
                 hwndDlg,                       // parent window 
                 (HMENU)TRACKBARID,             // control identifier 
                 (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),     // instance 
                 NULL                             // no WM_CREATE parameter 
                 ); 
    
             SendMessage(hwndTrack, TBM_SETRANGE, 
                 (WPARAM) TRUE,                   // redraw flag 
                 (LPARAM) MAKELONG(iMin, iMax));  // min. & max. positions
    
             SendMessage(hwndTrack, TBM_SETPAGESIZE, 
                 0, (LPARAM) 4);                  // new page size 
    
             SendMessage(hwndTrack, TBM_SETSEL, 
                 (WPARAM) FALSE,                  // redraw flag 
                 (LPARAM) MAKELONG(iMin, iMax)); 
    
             SendMessage(hwndTrack, TBM_SETPOS, 
                 (WPARAM) TRUE,                   // redraw flag 
                 (LPARAM) (long)((iMax-iMin)/2)); 
    
            //创建一个静态文本,显示当前值
             CreateWindow(
                 L"STATIC",
                 L"文本",
                 WS_VISIBLE | WS_CHILD | SS_LEFT,
                 30,280,150,20,
                 ParentHwnd,
                 (HMENU)TRACKBARSTATICID,
                 (HINSTANCE)GetWindowLong(ParentHwnd,GWL_HINSTANCE),
                 NULL
                 );
    
             int pos=SendMessage(hwndTrack, TBM_GETPOS,0,0);
             wchar_t buf[30];
             std::swprintf(buf,29,L"当前值为:%d",pos);
             SetWindowText(GetDlgItem(ParentHwnd,TRACKBARSTATICID),buf);
    
             SetFocus(hwndTrack); 
     }
     
     void HandleTrackBarMessage(const HWND &ParentHwnd, const UINT &Message, const WPARAM &WParam, const LPARAM &LParam)
     {
         switch(Message)
         {
            //本滑动条是横向的
         case WM_HSCROLL:
             //拖拽的同时,同步更新变量,更新频率会很高
            if ((HWND)LParam==GetDlgItem(ParentHwnd,TRACKBARID))
            {
                int pos=SendMessage((HWND)LParam, TBM_GETPOS,0,0);
                wchar_t buf[30];
                std::swprintf(buf,29,L"当前值为:%d",pos);
                SetWindowText(GetDlgItem(ParentHwnd,TRACKBARSTATICID),buf);
                SetFocus((HWND)LParam);
            }
         }
     }
    
     //----------------------------------------------------
     //WC_COMBOBOXEX
     //----------------------------------------------------
     void CreateComboBox(const HWND &ParentHwnd)
     {
         // Create the Combobox
         //
         // Uses the CreateWindow function to create a child window of 
         // the application window. The WC_COMBOBOX window style specifies  
         // that it is a combobox.
    
         int xpos = 10;            // Horizontal position of the window.
         int ypos = 320;            // Vertical position of the window.
         int nwidth = 200;          // Width of the window
         int nheight = 20;         // Height of the window
         HWND hwndParent = ParentHwnd; // Handle to the parent window
    
         HWND hWndComboBox = CreateWindow(WC_COMBOBOX, TEXT(""),
             CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE,
             xpos, ypos, 
             nwidth, nheight,
             hwndParent, 
             (HMENU)COMBOBOXID,
             (HINSTANCE)GetWindowLong(ParentHwnd, GWL_HINSTANCE),
             NULL);
    
         // load the combobox with item list.  
         // Send a CB_ADDSTRING message to load each item
    
         TCHAR Planets[9][10] =
         {
             TEXT("Mercury"), TEXT("Venus"), TEXT("Terra"), TEXT("Mars"),
             TEXT("Jupiter"), TEXT("Saturn"), TEXT("Uranus"), TEXT("Neptune"),
             TEXT("Pluto??")
         };
    
         TCHAR A[16];
         int  k = 0;
    
         memset(&A, 0, sizeof(A));
         for (k = 0; k <= 8; k += 1)
         {
             wcscpy_s(A, sizeof(A) / sizeof(TCHAR), (TCHAR*)Planets[k]);
    
             // Add string to combobox.
             SendMessage(hWndComboBox, (UINT)CB_ADDSTRING, (WPARAM)0, (LPARAM)A);
         }
    
         // Send the CB_SETCURSEL message to display an initial item 
         //  in the selection field  
         SendMessage(hWndComboBox, CB_SETCURSEL, (WPARAM)3, (LPARAM)0);
    
     }
    
     void HandleComboBoxMessage(const HWND &ParentHwnd, const UINT &Message, const WPARAM &WParam, const LPARAM &LParam)
     {
         switch (Message)
         {
         case WM_COMMAND:
             //注意!当使用 SendMessage(hWndComboBox, CB_SETCURSEL, (WPARAM)3, (LPARAM)0);
             //改变当前选定值时,不会产生CBN_SELCHANGE消息。
             if (HIWORD(WParam)== CBN_SELCHANGE && LOWORD(WParam)== COMBOBOXID)
             {
                 // If the user makes a selection from the list:
                 //   Send CB_GETCURSEL message to get the index of the selected list item.
                 //   Send CB_GETLBTEXT message to get the item.
                 //   Display the item in a messagebox.
    
                 int ItemIndex = SendMessage((HWND)LParam, (UINT)CB_GETCURSEL,(WPARAM)0, (LPARAM)0);
                 TCHAR  ListItem[256];
                 (TCHAR)SendMessage((HWND)LParam, (UINT)CB_GETLBTEXT,(WPARAM)ItemIndex, (LPARAM)ListItem);
                 MessageBox(ParentHwnd, (LPCWSTR)ListItem, TEXT("Item Selected"), MB_OK);
             }
         default:
             break;
         }
     }
    
     //----------------------------------------------------
     //WC_LISTBOX
     //----------------------------------------------------
     void CreateListBoxSingle(const HWND &ParentHwnd)
     {
         //创建
         HWND hwndTrack = CreateWindow(
             WC_LISTBOX,                    // class name 
             L"List Box",                // title (caption) 
             WS_CHILD |
             WS_VISIBLE | LBS_STANDARD | LBS_NOTIFY,    // style 
             10, 350,                        // position 
             200, 100,                       // size 
             ParentHwnd,                       // parent window 
             (HMENU)LISTBOXID,             // control identifier 
             (HINSTANCE)GetWindowLong(ParentHwnd, GWL_HINSTANCE),     // instance 
             NULL                             // no WM_CREATE parameter 
             );
    
         //初始化信息
         typedef struct
         {
             TCHAR achName[MAX_PATH];
             TCHAR achPosition[12];
             int nGamesPlayed;
             int nGoalsScored;
         } Player;
    
         Player Roster[] =
         {
             { TEXT("Haas, Jonathan"), TEXT("Midfield"), 18, 4 },
             { TEXT("Pai, Jyothi"), TEXT("Forward"), 36, 12 },
             { TEXT("Hanif, Kerim"), TEXT("Back"), 26, 0 },
             { TEXT("Anderberg, Michael"), TEXT("Back"), 24, 2 },
             { TEXT("Jelitto, Jacek"), TEXT("Midfield"), 26, 3 },
             { TEXT("Raposo, Rui"), TEXT("Back"), 24, 3 },
             { TEXT("Joseph, Brad"), TEXT("Forward"), 13, 3 },
             { TEXT("Bouchard, Thomas"), TEXT("Forward"), 28, 5 },
             { TEXT("Salmre, Ivo "), TEXT("Midfield"), 27, 7 },
             { TEXT("Camp, David"), TEXT("Midfield"), 22, 3 },
             { TEXT("Kohl, Franz"), TEXT("Goalkeeper"), 17, 0 },
         };
    
         // Add items to list. 
         HWND hwndList = GetDlgItem(ParentHwnd, LISTBOXID);
         for (int i = 0; i < ARRAYSIZE(Roster); i++)
         {
             int pos = (int)SendMessage(hwndList, LB_ADDSTRING, 0,
                 (LPARAM)Roster[i].achName);
             // Set the array index of the player as item data.
             // This enables us to retrieve the item from the array
             // even after the items are sorted by the list box.
             SendMessage(hwndList, LB_SETITEMDATA, pos, (LPARAM)i);
         }
         SendMessage(hwndList, LB_SETCURSEL, 2, 0);
         
     }
    
     void HandleListBoxSingleMessage(const HWND &ParentHwnd, const UINT &Message, const WPARAM &WParam, const LPARAM &LParam)
     {
         switch (Message)
         {
         case WM_COMMAND:
    
             if (HIWORD(WParam) == LBN_SELCHANGE && LOWORD(WParam) == LISTBOXID)
             {
                 int ItemIndex = SendMessage((HWND)LParam, (UINT)LB_GETSEL, (WPARAM)0, (LPARAM)0);
                 TCHAR  ListItem[256];
                 (TCHAR)SendMessage((HWND)LParam, (UINT)LB_GETTEXT, (WPARAM)ItemIndex, (LPARAM)ListItem);
                 MessageBox(ParentHwnd, (LPCWSTR)ListItem, TEXT("Item Selected"), MB_OK);
             }
         default:
             break;
         }
     }
    
     //----------------------------------------------------
     //Edit
     //----------------------------------------------------
     void CreateEdit(const HWND &ParentHwnd)
     {
         //创建
         HWND hwndedit = CreateWindow(
             L"EDIT",                    // class name 
             L"edit",                // title (caption) 
             WS_CHILD | WS_VISIBLE | WS_VSCROLL |
             ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,    // style 
             10, 460,                        // position 
             200,150,                       // size 
             ParentHwnd,                       // parent window 
             (HMENU)EDITID,             // control identifier 
             (HINSTANCE)GetWindowLong(ParentHwnd, GWL_HINSTANCE),     // instance 
             NULL                             // no WM_CREATE parameter 
             );
    
     }
    
     void HandleEditMessage(const HWND &ParentHwnd, const UINT &Message, const WPARAM &WParam, const LPARAM &LParam)
     {
         switch (Message)
         {
         case WM_COMMAND:
    
             if (HIWORD(WParam) == EN_CHANGE && LOWORD(WParam) == EDITID)
             {
                 int length =GetWindowTextLength((HWND)LParam);
                 std::wstring buf;
                 buf.resize(length);
                 GetWindowText((HWND)LParam,(LPWSTR)buf.c_str(),length);
                 MessageBox(ParentHwnd, buf.c_str(), TEXT("Item Selected"), MB_OK);
             }
         default:
             break;
         }
     }
  • 相关阅读:
    考试
    aws代理
    ansible debug
    apollo docker 安装 使用镜像 idoop/docker-apollo
    java jvm 内存监控工具visualvm 的使用
    kong dashboard UI 的使用 (使用kong 对服务反向代理,以及解决跨域问题)
    git账号
    kong Gateway && PostgreSQL 的安装(docker)
    apollo 配置中心的安装与使用
    springboot 开发模式 dev
  • 原文地址:https://www.cnblogs.com/Searchor/p/7397941.html
Copyright © 2011-2022 走看看