본문 바로가기

Tipssoft

MFC) MainFrame에 접근하기 GetParentFrame( )CMainFrame* myFrame = (CMainFrame* )GetParentFrame( ); GetParentFrame( )의 리턴형이 CWnd* 이기 때문에, CWnd를 상속받아 만드는 CFrame, CDialogue 등 자신이 원하는 클래스에 맞도록 캐스팅해 해당 클래스의 주소를 받아올 수 있습니다.이를 통해서 각 다이얼로그 간의 연결을 보다 쉽게 활용할 수 있습니다.CMainFrame가 자식 다이얼로그를 갖고 있다면, 자식 윈도우가 생성될 때 해당 방법을 통해 CMainFrame 클래스가 갖고 있는 각 자식 윈도우의 포인터에, 자식 윈도우의 주소를 넘겨주면 되기 때문//AFXGetParentFrame을 사용해도 됩니다. AFX는 전역의 의미를 뜻함 더보기
MFC) 메시지루프 순서 관련 MFC 메시지 루프BEGIN_MESSAGE_MAPEND_MESSAGE_MAP사이에 들어가는 ON_WM_머시기 등은 사실 if문이라고 생각하면 된다.그래서 발생 빈도가 높은 메시지일 수록 상위에 배치시키는게 유리하다.(ON_WM_CREATE 같은건 제일 최하단으로 바꾸는게) 계속 중간에 바꾸는건 의미 없으니 프로토 타입이 완성되면 나중에 바꿔주도록 하자 더보기
MFC) Splitter Window 만들기(분할창 만들기) 프로젝트 환경 구성은 MFC SDI 입니다.SDI로 생성시 만날 수 있는 CMainFrame에서 분할창을 만들 수 있습니다.CMainFrame.h에서 분할창 생성을 위한 변수를 선언합니다. CSplitterWnd m_wndSplitter, m_wndSplitter2, m_wndSplitter3; 분할창을 만들기 전에 사전 물밑작업이 필요합니다.다이얼로그를 추가하고 속성에서 Style: Child, Title Bar: False 을 지정합니다.오른쪽 버튼으로 해당 다이얼로그에 대해 클래스 추가해 적절한 이름을 지어줍니다.만든 각각의 다이얼로그는 곧 분할창을 대표할 창이 될 것입니다. 인터넷에는 열을 두 개로 나눈 예는 많은데, 여기서 만들어 볼 분할창은 두가지 입니다. Ver1) FormFolderDlg .. 더보기
MFC 창공유 프로그램(멀티스레드) MFC 스레드 정리1. MFC에서 스레드는 스레드 객체 파괴자가 있는 AfxBeginThread(스레드 실행함수, 실행함수에서 사용할 변수)를 사용한다.(main) 2. 스레드 실행 함수를 사용하기 위해서는 헤더에 static으로 선언한다. 3. 인자는 형변환을 통해 사용 가능하다.(이 사이에 스레드가 실행할 내용을 채운다) 4. 인자로 넘길 자료형은 구조체나, 아예 클래스로 생성하는 것도 방법이다. 더보기
TIPS 후기 7월 4일부터 8월 29일까지 매주 월, 목 밤 7시부터 10시까지 15번의 TIPS강의를 수강하였습니다.그동안 TIPS 강좌를 수강하면서 느낀 점을 혹시라도 모를 다음 기수 분들에게 참고가 되었으면 하는 마음에 후기를 남겨봅니다. 컴퓨터 공학과 3학년이라는 위치에서 봤을때, 초보자를 위한 TIPS C/C++/MFC 강의를 수강한다는 것은 제게 꽤 고민이였습니다.학교에서 C에 대해 주구장창 해와서 초보자는 아닌 것 같은데, 기대 이하의 수업이면 어쩌나 하는 걱정이 있었기 때문입니다.하지만 평소 포인터에 대해 막연한 두려움과 남들보다 코딩하는데 있어 자신이 없었기 때문에, 기초부터 다시 시작하자는 마음가짐으로 신청했습니다. 이후 팁스에 선발되어 무려 80명이나 되는 단체 톡방에 초대되고 시간이 지나면 조를.. 더보기
MFC 채팅 클라이언트 만들기(윈도우 소켓프로그래밍)-15 2016년 8월 25일 15번째 강좌 정리입니다. 오늘로써 채팅방 만들기-서버, 클라이언트 끝입니다.저번 시간에 만들던 server 마무리하고 바로 이어서 client 만들도록 하겠습니다.( 코드를 삽입한 스크립트가 크롬 환경에서는 이상하게 보이는 것을 확인했습니다.창을 확대하거나, 익스프롤러를 이용하면 더 편하게 볼 수 있습니다. ) Server 마무리Send( ) 부분서버에서 데이터를 수신했을 때, 채팅창에 접속한 모든 클라이언트에게 데이터를 보여 줄 수 있어야 합니다.위의 내용을 SendFrameData라는 함수를 새로 정의해 만들겠습니다.1234567891011121314void CExamServerDlg::SendFrameData(SOCKET ah_socket, char a_message_id,.. 더보기
MFC 채팅서버만들기(윈도우 소켓프로그래밍)-14 2016년 8월 22일 14번째 강좌 정리입니다. 오늘 정리할 내용은 채팅방 만들기-서버 Part 입니다.tipssoft에서 소켓은 무엇인지, 그 역사는 어떤지 자세히 정리된 글의 링크로 대체하겠습니다.http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=516 채팅방은 peer-to-peer 모델이 아닌 server-client 모델을 이용할 것입니다.그 이유는 다수의 client가 한 서버를 통해 채팅할 수 있도록 하기 위함입니다. 소켓프로그래밍 기본 세팅평소와 동일하게 대화상자 기반 MFC 프로젝트를 생성합니다.ListBox를 추가해 ID를 IDC_EVENT_LIST라고 설정하고 변수추가를 통해 private영역에 m_event_list를 추.. 더보기
MFC 리스트 박스-13 2016년 8월 18일 13번째 강좌 정리입니다.오늘 배울 내용은 리스트 박스, 그리고 소켓 프로그래밍(다음 강좌) 입니다.리스트 박스와 소켓 프로그래밍을 배워서 채팅프로그램을 만들 예정입니다. LIST BOX 생성도구상자에서 ListBox를 추가하고 속성에서 IDC_CAHT_LIST를 설정합니다. 만드는 listbox는 채팅창의 역할을 할 것입니다. 리스트 박스를 다룰 변수를 추가하기 위해 listbox를 클릭한 후 우클릭하여 변수 추가를 누릅니다. 컨트롤 ID가 IDC_CHAT_LIST인지 확인합니다. 액세스는 private로 설정합니다. ( 제 화면은 이미 private에 추가되어있어서 설정이 안되지만 처음 설정할 때 액세스 범주를 설정할 수 있습니다. ) EDIT BOX 생성이번엔 edit box.. 더보기
MFC 짝맞추기 게임 -12 2016년 8월 11일 12번째 강좌 정리입니다.오늘 실습 내용은 짝 맞추기 게임입니다.기본적인 짝 맞추기 게임에, 3회의 모든 카드를 다시 보여주는 힌트 기능, 시간제한과 카드를 맞춤에 따라 시간을 좀 더 주기도 하고, 짝이 안맞으면 시간이 감소하는 패널티 기능도 추가된 게임입니다. 1. 이미지 저장 & 카드배열 늘 하시던대로 대화상자 기반으로 프로젝트를 생성하신다음,~Dlg.h 파일에 private 영역을 새로 정의하여 다음과 같이 적습니다.카드 이미지는 19개로 CImage 배열을 선언하여 비트맵 이미지를 넣을 것입니다. 123456789101112BOOL CImageGameDlg::OnInitDialog(){ CDialogEx::OnInitDialog(); SetIcon(m_hIcon, TRUE).. 더보기
MFC 대화상자&버튼만들기-11(2) 2016년 8월 8일 11번째 강좌 정리 두번째 입니다.이번 포스팅에서는 MFC프로그램에 대화상자와 버튼을 다루는 것이 주 내용입니다. 도구상자 Control강좌정리글 10에서 소개한 방법대로 대화상자 기반으로 프로젝트를 생성합니다.이제 옆에서 도구 상자를 클릭해 Edit Control을 Drag and drop합니다. 해당 박스를 클릭하여 마우스 우측 버튼으로 속성에 들어가, ID에 해당하는 부분을 IDC_MY_EDIT로 수정합니다. 같은 방식으로 2개의 Edit Control 박스를 추가해 중간에는 IDC_MY_TEST, 오른쪽에는 IDC_MY_RESULT로 ID를 수정합니다. 그리고 도구상자에서 Button을 drag and drop하여 속성중 캡션에서 button1을 '합산'으로 수정합니다.ID는.. 더보기
MFC 오목(하) +알고리즘 추가-11 2016년 8월 8일 11번째 강좌 정리 입니다.저번 시간에 이어서, 오목 프로그램을 진행하겠습니다.완벽한 오목 프로그램을 위해서 추가해야할 부분은 많지만, 세 가지 수정사항만 하고 끝내겠습니다.세 가지 수정 사항은 다음과 같습니다.1. 바둑알이 바둑판 밖에서 찍히는 문제2. 놓았던 자리에 또 바둑알이 놓이는 문제3. 창을 invalid하게 만들면 알이 지워지는 문제 이전에 윈도우 창안에서 마우스 좌클릭 시, 도형 그리기에서 이 같은 문제( 2번, 3번)을 해결하기 위해찍은 도형의 좌표와 생성한 도형의 갯수를 카운트 하여 반복문으로 처리했습니다.그런데 오목판에서는 바둑판이 한정된 특징(1번 문제)으로 찍은 돌의 최대치가 정해져있고,격자 좌표를 벗어나는 바둑알이 놓일 일은 없으므로, 전과는 다른 방식으로 .. 더보기
MFC 설명&도형그리기&오목판(상)-10 2016년 8월 4일 10번째 강좌 정리 입니다.저번 정리에서는 Win32 를 통해 윈도우 창을 띄워 마우스 클릭시 도형(사각형, 원)을 생성해봤습니다.이번에는 동일한 과정을 MFC로 해보고, 이를 응용하여 오목 프로그램을 만들어 보겠습니다. MFC 설명 Win32는 C언어 환경이였습니다. MFC는 C++이기 때문에 Win32에서의 코드를 클래스 작업하여 바꿔야 할 필요가 있습니다.클래스 작업을 하기위해서는 어떻게 작업을 나눠서 클래스화 시킬 것인지 결정해야합니다.저번 Win32에서는 윈도우 속성값을 설정하고, 해당 윈도우를 등록한 뒤, 메인 윈도우로 생성하여 메세지 루프를 돌렸습니다.MFC에서는 CWinApp 클래스에서 위와 같은 내용을 처리합니다.CWinAppInitApplication - (윈도우 .. 더보기