Study/C, C++ (MFC, UE) 11

[MFC] PropertiesWnd

MFC SDI 프로젝트 생성시 기본으로 제공해주는 Property gird 도킹창 관련 코드 (VS2017 기준) PropertiesWnd.h #pragma once class CPropertiesToolBar : public CMFCToolBar { public: virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler) { CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler); } virtual BOOL AllowShowOnList() const { return FALSE; } }; class CPropertiesWnd : public CDockabl..

[MFC] Modaless Dialog

출처 : http://psmon.x-y.net/maniwiki/doku.php?id=mfc:%EA%B8%B0%EC%B4%88:%EB%AA%A8%EB%8B%AC%EB%A6%AC%EC%8A%A4_%EB%8C%80%ED%99%94%EC%B0%BD mfc:기초:모달리스_대화창 [PSMON WIKI] 모달리스 다이얼로그 와 메모리 리크(Leaks) Cdialog 즉 다이얼로그 창은. 간단하게 메시지를 주고 받을수 있는 가장 간단한 인터페이스부터 미디어 플레이어 같은 매우 복작합 인터페이스까지 쉽게 구현할수 있는 보편적인 인터페이스 입니다. 저두 처음에는 다이얼로그 모드에서 작업을 많이 했죠. 비교적 간단하고, 간편하게 짤수 있으니까요. 그러나 저러나, 다이얼로그는 모달과 모달리스가 있고, 모달 구현은 매우 간단합..

[MFC] 도킹 창 등록 관련

Visual studio의 새 프로젝트 생성시 기본으로 세팅되는 도킹 코드 이용 1234567891011121314151617181920212223242526272829// 도킹 창을 만듭니다.if (!CreateDockingWindows()){ TRACE0("도킹 창을 만들지 못했습니다.\n"); return -1;} //도킹하려는 창 각각 EnableDocking 함수 사용m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);m_wndClassView.EnableDocking(CBRS_ALIGN_ANY);m_wndDirView.EnableDocking(CBRS_ALIGN_ANY); //도킹창 하나를 기준으로 잡고, DockPane 함수를 사용하여//프레임 윈도우에 도킹한다. ..

GDI+을 사용하려면 반드시 초기화 구문을 쓰자

GDI+가 경로가 맞음에도 불구하고, 이미지를 불러오지 못해서 찾아봤지만,여러가지 시도를 해봤지만 실패 그러다가 GDI+를 사용하기 전에 초기화가 필요하다는 것을 뒤늦게 알고,선언을 하니까 이미지를 잘 불러오게됨... 기초는 항상 중요하다.... 12345678910111213141516171819202122232425//StdAfx.h#include #pragma comment(lib, "gdiplus")using namespace Gdiplus; //thaApp이 선언되어있는 클래스.h/cpp 파일 쪽 //전역변수 선언ULONG_PTR m_gdiplusToken; BOOL (클래스 이름)::InitInstance(){ GdiplusStartupInput gdiplusStartupInput; if (:..

[C++] Vector<String> 문자열 소트

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// SortTest.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다.// #include "stdafx.h"#include #include #include #include using namespace std; bool my_compare(string &left, string &right){ for (string::const_iterator lit = left.begin() , rit = right.begin() ; lit != left.end() && rit != right.end() ; ++lit, ++rit) { if (tol..

[MFC] Dialog 기반 프로그램 enter,esc 키 처리에 관해

MFC 대화상자 기반 프로젝트를 설계할 때,Enter, ESC 를 누르면 프로그램이 종료되는 문제가 있다. 이를 개선하기 위해서 함수 OnOK(), OnCancel()를 오버라이딩 하는 방법도 있지만,보통 PreTranslateMessage함수를 많이 사용하는 편이다. (많이 사용하는 편인 것 같다.) 다른 블로그 글에 의하면 해당 키가 감지 되었을 때 return TRUE을 해버리면 된다고 한다.다만 본인은 현재 채팅 프로그램을 학습 중이였기 때문에Enter키 이벤트가 필요해서 꽤나 골치 거리였다. http://mainia.tistory.com/599 해당 블로그 게시글에 힌트를 얻어서 엔터(VK_RETURN)를 눌렀을 경우, 포커스를 찾아서 만일 입력창에서 엔터키를 눌렀을 경우, Send 명령을 실행..

opengl.dll missing error 해결기

http://soen.kr/lecture/library/opengl/opengl-2.htm 위 링크에서 참고한 opengl 테스트 코드를 (간단하게 삼각형을 출력하는) 진행 중에 다음과 같은 메시지를 뿜으며 빌드가 안되는 오류가 발생했다. (사실 위 사이트 말고도 비슷한 코드가 있기는 하지만...) 개발 환경은 Visual 2017 Professional / "Windows 콘솔 응용 프로그램" 이었다. 어이가 없었던 점은 블로그 http://cinema4dr12.tistory.com/594 를 참고해서 만든 예제는 멀쩡하게 실행이 잘 되었다는 점. 따라서 해결 방안을 찾아보기로 하였다. 1. 프로젝트 속성 페이지를 비교 두 프로젝트의 차이점이라고 하면 콘솔하고 MFC이였기 때문에 프로젝트 속성을 비교해..

[C++, MFC] Radio button 그룹화

1. UI를 만든다. 2. 각각의 라디오 버튼의 속성을 지정한다.- 여기서 중요한 속성은 Group과 ID 이다.- ID를 통일 시키고 뒤의 숫자로 구분합니다.- Group과 Tabstop 의 경우 첫번째 라디오 버튼만 True 나머지는 False로 설정합니다. (마지막 버튼도 TRUE로 설정하라는 글도 간혹 있는 것 같습니다.) 3. 라디오 버튼을 추가한 다이얼로그 헤더에 (저 같은 경우에는 ServerCppDlg.h 파일)에 변수와 함수를 선언합니다.- 변수 : UINT m_radioProgramMode 변수명은 자유라디오 버튼 클릭시 해당 값을 저장하는 용도-1 : 선택안함0 : 라디오 버튼 첫번째 자리1 : 라디오 버튼 두번째 자리2 : 라디오 버튼 세번째 자리 ............ - 함수 :..