Win API
-
리스트 박스Win API/3. Control 2021. 3. 31. 23:05
개발 환경은 Visual Studio 2008 아래와 같이 여러 줄에 걸쳐 나열된 것을 리스트 박스라고 한다. 이 리스트 박스를 이용하여, 선택된 리스트의 이름을 위의 윈도우 캡션에 저장하는 프로그램을 만들어 보자. 리스트 박스를 생성할 시에, LBS_NOTIFY 가 있어야 한다. 그 이유는 사용자가 목록 중 하나를 선택하였을 때, 부모 윈도우로 통지 메시지를 보내도록 하는 기능이 있어야 하기 때문이다. LBN_SELCHANGE는 사용자에 의해 선택이 변경되었을 때를 의미한다. 프로그램 실행결과 소스 파일
-
에디트 박스Win API/3. Control 2021. 3. 31. 23:04
개발 환경은 Visual Studio 2008 아래의 그림의 입력 칸을 에디트 박스라고 한다. 32KB로 제한되며, 그 이상이 되면 Edit control out of space 에러가 발생한다. 이 에디트 박스에 글이 입력되면, 위의 윈도우 창의 캡션에 입력된 내용을 저장하도록 하는 프로그램을 만들어 보자. 이 내용을 시작하기에 앞서, GetWindowText 함수와 SetWindowText 함수에 대해 살펴볼 필요가 있다. 윈도우 창을 띄우는 기본 소스 파일을 가지고 구현을 하도록 한다. WM_CREATE에서 에디트 박스를 생성한다. 에디트 박스에 글이 입력이 되면, 글의 내용을 캡션에 저장한다. EN_CHANGE는 문자열이 변경되었을 때를 의미한다. 프로그램 실행결과 소스 파일
-
체크 박스Win API/3. Control 2021. 3. 31. 11:20
아래의 글에서, 윈도우 창을 띄우는 소스를 가지고 와서 구현할 것이다. 작업 환경은 Visual Studio 2008 designatedroom87.tistory.com/122?category=892369 프로젝트 생성 및 윈도우 창 띄우기 Visual Studio 2019를 실행시킨다. 그리고 새 프로젝트 만들기를 선택한다. Windows 데스크톱 마법사를 선택한다. 적당한 프로젝트 이름을 정하고 만들기를 선택한다. 애플리케이션 종류는 데스크톱 애 designatedroom87.tistory.com 아래의 UI 모양이 여기에서 만들 내용이다. 다음과 같이 열거자를 정의하고, 전역 변수를 선언한다. 전역 변수가 필요한 이유는 체크 박스의 상태가 체크가 되어 있지 않은 상태에서 선택이 되면 체크 상태로 만..
-
버튼Win API/3. Control 2021. 3. 29. 10:45
개발 환경 : Visual Studio 2008 버튼을 하나 생성해서, 버튼이 클릭 되면 "클릭되었다"라는 메시지를 출력하는 프로그램을 만들어 보자. 버튼도 하나의 윈도우이다. 다만, 자식 윈도우이다. 그러므로 버튼의 생성은 CreateWindow함수를 이용한다. 버튼이나, Text, 에디트 박스, 리스트 박스, 콤보박스 들은 전부 자식 윈도우 이다. 즉, 컨트롤은 윈도우이기는 하지만 홀로 사용될 수 없으며, 부모 윈도우의 차일드로 존재해야 한다. 차일드 컨트롤은 보통 부모 윈도우가 만들어 질때, 즉, WM_CREATE메시지가 발생했을 때 만든다. 버튼을 생성한 후에 CreateWindow함수는 생성된 차일드 컨트롤의 윈도우 핸들을 리턴하는데, 핸들이 필요한 경우 별도의 변수에 핸들값을 저장해 두면 된다..
-
WM_LBUTTONDBLCLKWin API/2. 메시지 처리 함수 2021. 3. 29. 09:15
윈도우 창 내에서, 마우스 더블 클릭 시 더블 클릭된 마우스의 위치를 출력하는 프로그램을 만들어 보자. 아래의 내용과 거의 같다. designatedroom87.tistory.com/405 WM_LBUTTONDOWN ( 마우스 왼쪽 클릭 ) 개발 환경 : Visual Studio 2008 윈도우 창이 뜨고나서, 이 윈도우 창 내에서 클릭된 마우스의 좌표값을 보여주는 프로그램을 만들어 보자. 소스 내용 프로그램 실행결과 MAKEPOINTS함수를 알아보자. MAKEP designatedroom87.tistory.com 소스 내용 더블클릭기능을 만들려면, 아래와 같이 윈도우 스타일에서 CS_DBLCLKS를 추가해줘야 한다. 프로그램 실행결과 소스 파일 이번에는 아래와 같이 메시지 처리 함수에서 왼쪽 버튼의 클..
-
WM_LBUTTONDOWN ( 마우스 왼쪽 클릭 )Win API/2. 메시지 처리 함수 2021. 3. 29. 08:58
개발 환경 : Visual Studio 2008 윈도우 창이 뜨고나서, 이 윈도우 창 내에서 클릭된 마우스의 좌표값을 보여주는 프로그램을 만들어 보자. 소스 내용 프로그램 실행결과 MAKEPOINTS함수를 알아보자. MAKEPOINTS함수가 반환하는 값은 POINTS구조체이다. 이 구조체 안에는 x와 y의 좌표 값이 들어있다. 이 함수의 반환값을 임시 변수 Pos로 받는다. TCHAR 배열에 대해 알아보자. Widechar형 배열하나를 임시로 선언한 부분이다. TCHAR는 자료형. char는 1바이트, TCHAR는 2바이트이다. _stprintf_s 함수에 대해 알아보자. Pos.x와 Pos.y 의 값이 L" %d %d"에 들어가고, _stprintf_s함수가 L" %d %d"값을 temp에 넣어준다. ..
-
WM_CREATEWin API/2. 메시지 처리 함수 2021. 3. 29. 08:40
작업 환경 : Visual Stdudio 2008 윈도우 창이 하나 생성되었을 때, "윈도우 창이 생성되었습니다." 라는 메시지 창을 하나 띄워 보자. 아래의 WinMain 함수는 윈도우 창을 하나 생성하는 내용으로 수정된 내용이 없다. 소스 파일 내용 WM_CREATE 메시지는 윈도우가 생성될 때 보내지므로 각종 초기화를 하기에 적합한 장소이다. ( 윈도우의 일생을 통틀어 딱 한 번씩만 전달되는 특성이 있어 일회적인 작업인 초기 처리에 사용 ) 윈도우가 제대로 실행되기 위한 선결 조건이 있다면 WM_CREATE에서 처리한다. WM_CREATE 메시지는 CreateWindow 함수에 의해 메인 윈도우가 생성된 직후에 보내진다. WM_CREATE 메시지는 특정한 윈도우에 관련된 초기 처리를 하는데 사용하는..
-
프로젝트 생성 및 윈도우 창 띄우기Win API/1. 프로젝트 생성하기 2020. 9. 30. 08:05
Visual Studio 2019를 실행시킨다. 그리고 새 프로젝트 만들기를 선택한다. Windows 데스크톱 마법사를 선택한다. 적당한 프로젝트 이름을 정하고 만들기를 선택한다. 애플리케이션 종류는 데스크톱 애플리케이션을 선택하고, 추가 옵션은 빈 프로젝트를 선택한다. 여기서 빈 프로젝트가 아닌 미리 컴파일된 헤더를 선택해서 프로젝트를 만들어도 된다. 만약, 미리 컴파일된 헤더를 선택해서 만들었다면 프로젝트 명과 동일한 cpp파일이 있다. 이 cpp파일의 내용을 지우고 아래의 내용을 복사해서 만들어도 된다. 다만 그대로 컴파일을 하면 아래와 같은 컴파일 에러가 발생한다. 이는 다음과 같이 인클루드를 해주면 된다. 소스 파일에서 cpp파일을 하나 생성한다. Winmain.cpp 파일에 다음의 내용을 복사..