190701-2 - 핸들, 동기, 신호/비신호 (1일차) 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. #include #include #include void main() { //const char* s = "Hello!"; // 상수 메모리 문자열 ////s[0] = 'a'; // 변경할 수 업 //printf("%s\n", s); char cur[MAX_PATH]; char sys[MAX_PATH]; char win[MAX_PATH]; // 현재 작업 디렉토리 GetCurrentDirectory(MAX_PATH, cur); //● 작업 디렉토리 : 프로세스는 자기만의 작업디렉토리가 있다. //SetCurrentDirectory("C:\\Temp"); //GetCurrentDirec..
윈도우즈 시스템 프로그래밍에 관련된 내용입니다. 190701-1 - 커널오브젝트, 아스키코드와 유니코드 (1일차) 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. C/C++의 DLL등을 .Net에서 갖다가 그대로 쓸 수 있다. (유명한 C++/C 라이브러리는 C#으로 포팅 되어있다.) 다른 언어를 사용할 때 BCL을 사용해야한다. (이론적으로 모든 언어로 프로그래밍이 가능하다. 그러나 거의다 C#으로 개발함) Win32라이브러리에서 os와 밀접한 부분을 공부한다. 그 부분이 시스템 프로그래밍이다. 여기서는 프로세스와 쓰레드, 핸들 종류, 메모리, DLL(동적 링크 라이브러리), 동기화 객체, +a 등을 중요하게 공부할 것이다. 쓰레드와 동기화 부분은 다른 쪽으로 넘어가도 중요한 부분이 될..
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 -> 데이터로 다시그리거나(일..
190625 - 복습 STL 추가 짤막 강의 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. C++은 C언어 객체지향 STL Template 을 포함한다. STL(Standard Template Library)은 컴포넌트 라고 부르는 6가지 요소를 가지고 있다. 컨테이너 (JAVA나 C#에서는 컬렉션) 시퀀스(Vector,List) 연관 컨 알고리즘 (100여개) 반복자 함수자 어뎁터 할당기 저장 연속 비연속 vector V; list L; // 상수시간 삽입삭제 STL 연산자 중복이 중요 (C++에서도 연산자 중복이 중요하다. 태생적인 이유로.) 벡터에서 [] 연산자 중복을 해놓았다. 접근을 편하게 하려고. #include #include #include //using std..
190624(1일차) - Win32 API 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 윈도우 기본 윈도우 객체 메세지(키보드 마우스) 자식윈도우, 다이얼로그 앞으로 win32로 개발할 일은 없다고 보면된다. 윈도우즈.net 과정은 윈도우로 공부하게된다. 2000년도 : win32 API (GUI 라이브러리) (C언어 형태의 라이브러리 : 함수형 라이브러리) 이후에 객체지향 개발방법론이 이슈가 되었고 C++이 각광을 받기시작했다. 함수였던 것을 C++형태의 클래스화 (+a)한것을 MFC라고 한다. 90년대 말 되면서 컴포넌트라는 말이 많이 뜨기 시작했다. 모듈화 되어있는 것들을 소프트웨어로도 만들어보자 (소프트웨어 컴포넌트) 컴포넌트를 가져다 쉽게 쓸 수 있는 기능을 가진 COM Ac..
190621(4일차-정리end) - 연산자 오버로딩 교육을 받으면서 노트필기 했던 내용을 날것 그대로 업로드합니다. 연산자 오버로딩 ob1 + ob2 는 ob1.operator+(ob2) 로 수행된다. #include using namespace std; class pos { int x; int y; public: pos(int x = 10, int y = 20) :x(x), y(y) {} pos operator+(const pos& rf) {// pos tmp; tmp.x = x + rf.x; tmp.y = y + rf.y; return tmp; } void print() { cout