1. 2009.11.07 Win32 API에 버튼 추가하기

Win32 API에 버튼 추가하기

 

  1. 메인 소스 맨 위쪽의 define 부분에 추가할  버튼 컨트롤 ID추가

     #define IDC_SEND 1003 //버튼컨트롤 ID
    ※위의 버튼 컨트롤은 1002번으로 계속 버튼 컨트롤 숫자를 1씩 추가

  2. WndProc 함수에 버튼을 눌렀을 경우 해당하는 내용 추가

     
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
          int wmId, wmEvent;
          PAINTSTRUCT ps;
          HDC hdc;
          static SHACTIVATEINFO s_sai;

           switch (message) 
           {
                  case IDC_SEND:
                                   bt.PortWrite(L"12345");
                                   break;

     →IDC_SEND 버튼을 눌렀을때 나타는 일은 PortWrite 함수를 호출하는 것. 

  3. 화면에 버튼 그려주기
                  case WM_CREATE:
                                CreateWindow(L"button", L"SendButton",WS_CHILD| WS_VISIBLE|BS_PUSHBUTTON,
                                                     10,160,100,30,hWnd,(HMENU)IDC_SEND,g_hInst,NULL);
                                break;
     위의 switch 문에 이어서 WMCREATE 부분에 CreateWindow함수를 추가하는 것으로 화면에 버튼이 만들어진다.
    이것은 단순히 화면에 버튼만 출력하는 것으로, 이 부분만 수행하였다면  2번째 과정을 안했으므로 버튼을 클릭하여도 아무런 반응이 없을 것이다, 아니면 아에 컴파일이 안되는건가.

    - CreateWindow 함수에서 버튼을 만드는데 쓰이는 파라미터는 빨간색으로 표시해 놨으며,
        그 부분에 대하여 설명을 하자면,  

           
                    L"button" :  버튼을 만든 다
                    L"SendButton" : 버튼 안에 들어갈 문자 
                    10,160,100,30 : 버튼이 생성될 위치와 크기 
                                         x좌표, y좌표,  수평크기, 수직크기
                    IDC_SEND : 버튼 컨트롤 ID

    ※ 버튼의 모양을 바꾸기 위해서는 WS_CHILD| WS_VISIBLE|BS_PUSHBUTTON 이 부분에 해당하는 내용을 변경 하여야 한다.





     

'c/c++ > winapi' 카테고리의 다른 글

[API]OWNERDRAW로 버튼 이미지 바꾸기  (0) 2012.08.01
[API] 슬라이더에서 값 읽어오기  (0) 2012.07.23
[API] 버튼에 이미지 씌우기  (0) 2012.07.23
WM_TIMER  (0) 2009.05.26
ComboBox  (0) 2009.05.26