본문 바로가기

Tipssoft

[TIPS} 15th 20160825 15번째 강좌 정리입니다~ 지난시간 설명한 것처럼 "abc"를 보낸다면 뒤에 0까지 해서 4byte를 보내는데, 그것만 보내지 않고 헤더를 붙여야 한다.즉 27, 1 ,4(2byte), "abc"로 4+4 바이트를 보내야 한다. 따라서 이 부분은 함수를 따로 하나 만들어줄 것이다. -SendFrameData 함수 작성하기 이와같이 만들고 헤더파일에도 추가해준다. 메모리를 동적할당할때는 항상 반환을 함께 써주는 습관을 들여야한다. a_body_size가 들어가는 부분을 생각해보자. 사이즈가 255이하일 경우에는 리틀엔디언을 쓰기 때문에 정상적으로 작동할수는 있지만 그 이상일 경우에는 오류가 나게된다. 따라서 위와 같이casting을 해주는 것이다!! 위와 같이 메모리카피함수와 전송함수를 추가하여 함수작성을.. 더보기
[TIPS] 13th 20160818 (list box / socket) 13번째 강좌 정리입니다~^^ 1. MFC프로젝트를 만든다. 2. 도구상자에서 리스트박스를 눌러 배치해준다.listbox는 자료구조를 가진 컨트롤이다. 기본적으로 문자열을 다룰 수 있도록 되어있는데, 나중에 더 배우면 문자열 뿐만 아니라 다양하게 사용할 수 있다! 3. 다음과 같이 리스트 박스와 에디트컨트롤, 버튼을 배치해 준다. 4. 먼저 리스트박스의 ID를 IDC_CHAT_LIST로 바꾸어 준다. 에디트컨트롤 ID를 IDC_CHAT_EDIT로 바꾸어 준다. 버튼 ID의 캡션을 입력으로 바꾸어 준다. 5. 리스트박스를 우클릭하여 아래와 같이 변수를 추가한다. 6. 버튼을 더블클릭하여 함수를 만들고, void CExamListBox2Dlg::OnBnClickedButton1(){CString str;Ge.. 더보기
[TIPS] 11th 20160808 11번째 강좌정리입니다~! 지난번에는 오목판 만들기, 오목돌 칸에 맞춰놓기 까지 작성하였다.여기까지는 오목판 바깥에도 돌을 놓을 수 있고,모니터 바깥으로 창을 옮겼다 가져오면 돌이 없어져 판을 엎을 수 있고...!!놓았던 곳에 중복해서 또 놓을 수 있는 문제점이 있다. -돌의 위치 기억하기 1.먼저 놓인 돌의 위치를 기억해주기 위해 Dlg 헤더파일에 들어가 돌이 놓일 수 있는 13*13배열을 선언해준다. char m_dol[13][13]; 2. 그 후 헤더파일에서 '표준생성자입니다' 부분 (여기서는 파일명이 Omok이라서 COmokDlg)을 클릭하고 F12를 눌러 소스파일의 객체생성자 부분을 찾아가 선언한 배열을 모두 0으로 초기화한다. (0은 비어있음, 1은 흑돌, 2는 백돌) memset(m_dol,.. 더보기
[TIPS] 10th 20160804 10번째 강좌 정리입니다~~ C를 C++로 바꿀 때는 클래스 작업을 해야한다. 클래스 작업을 할 때에는 소스에서 무엇이 바뀌고 무엇이 바뀌지 않는지 파악해야한다. 아래 대표님블로그에 더 자세한 설명이 있다.http://blog.naver.com/tipsware/220070159066C++에서는 마음에 안드는 부분은 class를 만들어두고 상속해서 오버라이팅하는 방법이 있다. MFC에서는 작업을 크게 두가지로 나눌 수 있다.-동작부분(윈도우프로시드와 크리에이티브부분)-프로그램을 등록하고 메세지 처리하는 부분(윈메인에서 크리에이티브부분 빼고 다) MFC는 다 클래스 이름을 C를 붙여서 사용한다. 바뀌는 부분을 다 변수로 만들어둔다. unsigned short InitApplication(); 이 부분에 윈도.. 더보기
[TIPS] 9th 20160801 9번째 강좌정리입니다. API 실습(2) 윈도우는 옛날에 양보에 의한 멀티태스킹을 했다. 이게 메세지 방식인데, 호환성 때문에 지금도 메세지 방식을 사용하는 것이다. 메세지에 대해 더 얘기하자면 GetMessage는 반환값이 0이여야 while문이 종료된다. WM_QUIT 메세지가 들어와야 GetMessage함수가 0을 반환한다. WM_QUIT은 시스템이 넣어주는 경우도 있고, 다른 어플리케이션이 넣는 경우도 있고, 내가직접 넣는 경우도 있다. 지난번 실습까지가 기본 골격이였다. 기본 골격에서 배경색, 화살표, 아이콘, 좌표, 캡션명 등을 바꿀 수 있었다. 윈도우 자체에서 해주는 것이 많다. 클라이언트 부분만은 사용자가 정하는데 그때 사용하는 것이 lpfnWndPro 함수포인터이다. 지난 첫번째 API실.. 더보기
[TIPS] 8th 20160728_(2) 8번째 강좌정리입니다.(2) 첫번째 실습입니다^^ 1. APIApplication Programming Interface프로그램을 만드는데 도와주는 함수의 집합이라고 할 수 있다. 즉, 운영체제가 어플리케이션 개발자들에게 제공하는 함수. 2. SDKSoftware Development Kit소프트웨어를 개발하는데 필요한 모든 도구들. 비쥬얼스튜디오(VS)도 SDK에 속한다. 참고로 VS는 API와 SDK를 합한 것으로 볼 수 있다. 3. MFCMicrosoft Foundation Class API를 C에서 C++로 바꿔야하는데 (class로) 이러한 일을 하는 팀이 만드는 것이 MFC이다.따라서 MFC의 경우 API보다 개발속도가 느릴 수 밖에 없고, 최신프로그램을 늦게 사용하게 된다. 우선 우리는 wi.. 더보기
[TIPS] 8th 20160728_(1) 여덟번째 강좌입니다(1) 1. 함수의 포인터 다음과 같은 함수가 있다고 하자. void Test(int a){...} 지금까지는 메인함수에서 Test(3); 과 같은 방식으로 호출하였다. 하지만 함수 또한 변수처럼 포인터를 통해서 호출할 수 있다. 먼저 함수의 타입에 대해서 살펴보자.함수의 타입은 함수의 이름을 뺀 나머지라고 생각하면 된다. 위의 Test함수의 타입은 함수이름을 뺀 나머지, 즉 void (int)이다. (매개변수 명은 써주지 않아도 된다.) Test함수의 포인터는 다음과 같이 선언할 수 있다. void (*fp)(int); 매개변수 갯수와 타입만 맞으면 된다. 그렇다면 왜 포인터를 쓸까? -> 함수는 함수이름을 사용시에 기계어로 변환되며 고정되어버린다. 하지만 포인터를 사용한다면 함수의 .. 더보기
[TIPS] 7th 20160725 7번째 강좌정리입니다.1. 접근제한자- 외부 클래스에서 해당 클래스의 멤버변수와 멤버함수의 사용여부를 결성하기 위해 사용하는 것이 접근제한자이다.- 멤버의 앞에 private, public, protected 키워드와 :를 함께 사용하여 명시하며, 클래스에서 어떤 접근 제한자도 명시하지 않은 경우에는 기본적으로 멤버가 private권한을 가진다. private age는 private에 존재하기 때문에 접근이 불가능하다. public 외부 클래스에서 해당클래스 멤버의 접근이 가능하다. 주로, 멤버변수들은 외부클래스에 사용할 수 있도록 하는 인터페이스들을 public으로 선언한다. 2. THIS 포인터 다음과 같은 C언어코드를 C++로 바꾸면 아래와 같다. - THIS 포인터는 현재 활성화된 객체의 주소를 .. 더보기
[TIPS] 6th 20160721_(2) 여섯번째 강좌 C++입니다 1. C의 특징C언어는 편의점과 같은 구조로 생각하면 쉽다.자신이 원하는 것을 빠르게 찾을 수 있다는 장점이 있지만, 편의점의 구조(데이터구조)가 변했을 때, 코드변화도 같이 생겨버린다. 이는 프로그램을 잘 하면 극복가능하긴 하다.-코드의 유지 보수가 어렵다.-보안에 취약하다. 2. C++의 특징c++은 은행같은 구조로 생각하면 이해하기 쉽다. 데이터의 변화가 있어도 사용자는 그에 관해 알고있지 않아도 되기 때문에 변화의 양을 최소화 할 수 있고, 대체가 편하다. 하지만 C에 비해 느리다는 단점이 있다. 빠른 부분이 필요하다면 C코드로 작성하기도 한다. 3. 객체지향이란?-C언어에서는 모듈이라는 개념을 제공했다. 모듈은 함수의 집합체로서 코드로 국한된 단위였다.하지만 구조체와 .. 더보기
[TIPS] 6th 20160721_(1) 6 여섯번째 강좌 정리입니다. 1. 구조체 - 서로 다른 데이터 형을 하나의 데이터로 군집화하여 사용할 수 있도록 하는 사용자 정의 데이터 형을 구조체(structure)라 한다. 중복해서 자주 사용하는 명령어는 함수로 구조하였다. 이처럼 중복해서 자주 사용하는 변수는 (즉, 데이터) 구조체로 구조한다. 배열과 달리 구조체는 서로 다른 데이터끼리 그룹지을 수 있다. 대표적인 예로 성적처리시 학생 개개인별로 성적을 그룹지어 관리하는 것이 있다. - 구조체의 정의 struct 키워드와 사용할 구조체 명을 명시하여 구조체를 정의한다. 구조체 내부를 구성하는 데이터는 미리 정의된 데이터 형으로 선언해야 한다. 구조체 내부의 각 데이터는 분리자(;)로 구분해야 한다. struct 구조체명{ 데이터 형 변수명1; .. 더보기