본문 바로가기

Windows19

[파일 열기] CFileDialog 예제 웹 브라우저에서 파일 첨부를 할 때 열리는 explorer 와 동일하게 보이는 창을 여는 예제입니다. MFC 로 Window 가 있는 프로그램에서 pc의 파일을 첨부 (혹은 file path를 받아오기 위함) 하는 예제로 사용될 수 있습니다. CString dirdir; CString fileName; CString fileDir; CFileDialog fileDlg( TRUE, NULL, NULL, OFN_EXPLORER | OFN_HIDEREADONLY, L"모든파일(*.*)|*.*||" ); if( IDOK == fileDlg.DoModal() ) { fileName = fileDlg.GetFileName(); // 파일명 받기 fileDir = fileDlg.GetPathName(); // 경로 .. 2020. 8. 8.
COM 동적 링크 라이브러리 CppShellExtContextMenuHandler 프로젝트 개요 https://code.msdn.microsoft.com/windowsapps/CppShellExtContextMenuHandl-410a709a 2018. 10. 3.
(1) Component Object Model 이란? COM 이 무엇인지는 사실 아직도 명확하게 잘 모르겠다. 처음에는 COM이 뭔지에 대해 감 조차도 오지 않아서, Windows Shell Extension 모듈을 만들어보고 이 dll이 COM인줄 알았다.* 예를 들어 Internet Explorer 아이콘에 마우스를 올리고 우클릭하면 나오는 메뉴 목록에 메뉴를 추가할 수 있는 ContextMenu 라던가, Chrome 아이콘에 붙는 화살표 작은 아이콘(바로가기 표시) 를 그려주기 위한 IconOverlay 라던가 하는, 말 그대로의 Shell(탐색기) Extension(확장) 모듈 왜 이런COM 이라는 걸 알게 된 계기가 Shell Extension 모듈을 만들어보면서 처음 개념을 접했기 때문이다. 그냥 Code Project에 있는 소스 보면서 dll.. 2018. 8. 15.
CString 함수 AfxExtractSubString / strtok, strtok_s, wcstok_s AfxExtractSubString 함수 사용 시 메모리 부족 오류 나는 현상 if( AfxExtractSubString(szTmpBuffOne, szTmpBuff, i, '\n') ) 여기서 szTmpBuff는 사용자에게 입력받은 경로 값-> 경로 길이가 너무 길어서 함수 내부에서 Exception 발생, 디버그로 돌리면 '메모리가 부족합니다'라는 오류 메시지 출력 따라서 그냥 메모리 힙 잡아서 구분자 사용하려고 수정 char str[] = "My name is Hong Gil Dong";char *pToken = NULL;char *pSeparator = " "; // 구분자 /* 첫번째 수행시에" " 구분자로 자른 후 My 라는 문자열을 리턴합니다. 정확히 얘기하면 주소값을 리턴합니다. 나머지 na.. 2018. 2. 19.
Windows의 잡다한 지식 #define _WIN32_WINNT 0x0500 // enable Win 2K features#define WINVER 0x0500 // enable 98/2K features#define _WIN32_IE 0x0400 // enable IE4+ features 이러한 것들을 헤더에서 정의해 주는 이유는 사용할 API의 한계를 결정짓기 위해서다. 윈도우 API의 경우 새로운 운영체제가 나오거나, 새로운 인터넷 익스플로러가 출시될 때마다 추가되는 경향이 있다. 최신 운영체제에서만 지원하는 API를 사용한 경우 그 운영체제보다 아래의 버전에서는 해당 프로그램이 동작하지 않는다는 이야기다.예를 들면 InterlockedExchangeAdd란 API는 윈도우 98부터 사용할 수 있다. 윈도우 95에는 해당 A.. 2017. 9. 14.
Dialog에서 툴바 생성 설명 출처 블로그에 들어가면 자세하게 나와있지만MFC에서 ToolBar(도구모음)를 생성하는 방법은 Frame 기반 MFC 프로젝트에서와 Dialog 기반 MFC 프로젝트에서 다르다. 나는 다이얼로그 기반에서 ToolBar를 생성해서 붙여줬다. 툴바를 붙이고자하는 Dlg.cpp의 OnInitDialog에서 InitToolBar() 를 호출 BOOL CTest2Dlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(ID.. 2017. 8. 23.