190628(5일차) 정처기 시험준비하느라 수업을 잘 듣지 못한 날. 복사생성자 처음 초기화를 복사로 함. 복사 대입 연산자 원래 만들어진 곳에 대입 (참조면 delete 필요) 개체는 독립성을 가져야한다. 복사 생성자의 원형 String(const String& arg) { } DrawText(hdc, msg, -1, &rt, DT_CENTER|DT_VCENTER|DT_SINGLELINE); GetClientRect(hwnd, &rt) 윈도우의 생성정보를 유지하는 메모리 블록이 있다. 메모리 블록을 컨트롤 하는 것이 핸들. 사용자가 메모리 블럭을 만들어 낼 수 있다. (각 윈도우 마다 만들 수 있다.) cbClsExtra 를 사용하면 된다. 또는 cbClsExtra. WndClass.cbWndExtra..
190627(4일차) - 다이얼로그 윈도우, 자식윈도우, 컨트롤 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 다이얼로그윈도우 자식윈도우 컨트롤 응용 프로그램 메뉴 클릭시 WM_COMMAND 가 발생된다. wParam의 LOWORD에서 어떤 메뉴가 눌렸는지 알 수 있다. 프로시저(핸들러) : 메세지를 처리하는 함수 MVVM : 모델뷰 뷰모델 현윈도우 외 다른 영역에서 마우스가 떼졌을 때 좌표가 필요하다면, 마우스캡쳐가 필요하다. SetCapture(①); //DOWN메세지에서 ①: 어떤 윈도우가 캡쳐받을 건지 (hwnd 등) ReleaseCapture(); //UP메세지에서 이 때 우리가 하는 실습 네모그리기에서 화면 밖 영역에서 마우스를 놓게되면, 마이너스 값을 갖게된다. 8비트 였던..
190626(3일차) - DC받고 그리기 작업, bitmap 타이머 사용. 간격마다 반복적작업 전역변수 없애고 사용자 메세지 전송하고 프로시저에서 처리 메뉴추가 버튼클릭 비트맵 개발자에게 도구는 개발자 능력을 50%이상 향상시킨다. "Code" Add : 코드 추가 ↕ "Refactoring" : 리팩토링 (결과가 바뀌면 안된다.) 두 개를 동시에 하진 않았다. PtInRect() 숙제 : 첫번째 점에 근처에서 클릭하면 폴리건완성되게해라 WM_KEYDOWN : 그냥 키 메세지 WM_CHAR : 문자코드 메세지 (대/소문자 구분가능) WM_KEYUP : 그냥 키 메세지 키스트로크 - 숙제. 랜덤값 사용해서 8방향 중 한 방향으로 튀긴다. 타이머 쓰레드 비동기IO SendMessage() WM_APP + a..
190625(2일차) - 콜백, 그리기(Invalid Region) return 0; 생략시 0을 자동으로 반환한다. caller : 호출 client callee : 피호출 server 콜 : 서비스코드를 클라이언트에서 불러낸다 콜백 : 클라이언트코드를 서버에서 불러낸다. 특정 이벤트가 발생되면 OS가 알아차리고 해당 이벤트에 맞는 기능이 수행되도록 콜백한다. #include void PrintList(const int arr[], int size) { for (int i = 0; i 다시그리기를 해야한다. - GUI그리기는 크게 2개 방식이 있다. 애플리케이션이 그리기 정보를 복원해야하는 방식 Win32API GDI, MFC GDI+, JAVA Swing, WinForm -> 데이터로 다시그리거나(일..
190624(1일차) - Win32 API 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 윈도우 기본 윈도우 객체 메세지(키보드 마우스) 자식윈도우, 다이얼로그 앞으로 win32로 개발할 일은 없다고 보면된다. 윈도우즈.net 과정은 윈도우로 공부하게된다. 2000년도 : win32 API (GUI 라이브러리) (C언어 형태의 라이브러리 : 함수형 라이브러리) 이후에 객체지향 개발방법론이 이슈가 되었고 C++이 각광을 받기시작했다. 함수였던 것을 C++형태의 클래스화 (+a)한것을 MFC라고 한다. 90년대 말 되면서 컴포넌트라는 말이 많이 뜨기 시작했다. 모듈화 되어있는 것들을 소프트웨어로도 만들어보자 (소프트웨어 컴포넌트) 컴포넌트를 가져다 쉽게 쓸 수 있는 기능을 가진 COM Ac..
[win32 api] EditBox, ListBoc Control에디트 박스 컨트롤 (Editbox Control)다이얼로그에 있는 에디트 박스 컨트롤에 사용자가 입력을 해주거나 변화를 준다면, 에디트 박스는 통보메세지를 wParam(word paramiter)의 HIWORD(상위 2byte)에 EN_CHANGE 메세지를 보내준다. 에디트 박스가 변할 때, 처리를 해주고 싶다면 switch문이나 if문을 이용해서 처리해준다. 스위치 문을 사용해서 처리해주는 것이 일반적인데 학습을 위해 if문을 사용해서 처리해준 모습이다.GetDlgItemText() 함수를 사용해서 buf에 해당 에디트 박스에 있는 텍스트를 읽어올 수 있다.SetDlgItemText() 함수를 사용해서 해당 에디트 박스에 buf에 있는 ..
[Win32] Modal dialog Modeless 대화상자(생성 및 사용법) 윈도우에서 생성할 수 있는 다이얼로그(대화상자) 종류에는 모달 다이얼로그와 모달리스 다이얼로그가 있다.모달 다이얼로그는 다른 곳으로 포커스가 가지 않으며 예시로는 메모장에서 다른이름으로 저장하기를 눌렀을때, 포커스가 다른이름으로저장하는 윈도우에 맞추어지며 메모장으로 포커스를 돌릴 수 없다. 반드시 저장이나 취소를 해주어야 다시 부모윈도우로 돌아온다.Modal dialog 생성방법 모달 다이얼로그는 DialogBox 함수로 생성할 수 있다.첫번째 인자 : 커널이 윈메인에 부여해준 hInstance 두번째 인자 : 생성하려는 다이얼로그의 ID를 MAKEINTRESOURCE로 생성해준다. 세번째 인자 : 부모 핸들 네번째 인자 :..
wsprintf 로 buf에 문자열 복사하기 (Win32 Api)포멧된 데이터를 특정 버퍼에 넘겨준다. 모든 인수는 해당포멧에따른 스트링으로 변환된다.복사가 끝나면 마지막에 널문자를 추가해준다. 하지만, 반환되는 값에는 널문자를 카운트 하지 않는다.형식int wsprintf( 수신할 LPSTR타입의 버퍼, 규격에 따른 문자열, 하나 이상의 인자(선택));사용예시버퍼에 사각형의 정보를 위와 같이 출력하고 싶을때. TCHAR를 이용해서 출력하고 싶을때 사용했습니다. %d에 넣어줄 정수를 3번째 인자부터 차례대로 넣어주며, %02d의 뜻은 출력 정수를 2자리로 하겠다는 것이고 빈 공간은 0으로 채운다는 뜻입니다.
LB_SETCURSEL (win32 api)필요한 경우 문자열을 선택하고 스크롤하여 뷰로 나타낸다.새 문자열을 선택한다면, 리스트박스가 이전에 선택된 문자열에서 선택푯를 제거한다. 파라미터wParam : 선택한 문자열의 0기반 인덱스를 설정한다. -1인 경우에 목록에서 선택한 항목이 없게함.lParam : 사용하지 않음. 사용예리스트박스에 어느 백터를 출력하는 경우에, 벡터에 자료가 추가될 때마다 리스트 박스가 업데이트 되며 리스트박스의 크기를 넘어가면서 추가가 되는경우에 스크롤을 함께 내리며 출력되게 하고 싶을 때 사용했다.추가적으로 만약에 스크롤 되어질때 강조표시(파란배경)이 뜨는 것을 보기 싫다면 추가적으로 호출하고SendMessage(GetDlgItem(hwnd, IDC_LIST1), LB_SET..