[MFC] CListCtrl SetItemData, GetItemData – 아이템에 데이터 저장하기

이번 글에서는 리스트 컨트롤의 SetItemData와 GetITemData에 대해 알아보겠습니다.위 함수는, 리스트 컨트롤의 아이템에 데이터를 설정하거나 가져오는 함수 입니다.예를들어 설명하겠습니다. 아래와 같이 학생 정보를 표시하는 클래스가 정의 되어 있다고 봅시다. 학생에 대한 정보를 아래와 같이 리스트 컨트롤에 표현할 수 있습니다. 이 경우가 제일 일반적인 리스트 컨트롤의 표시 방법입니다.만약에 개인정보 보안이 강화되어 이름과 핸드폰번호를 표시하지 않아야 한다면 어떻게 해야 할까요?아래 코드와 같이 “****”로 암호화 하여 … Read more

[MFC] CEdit, 패스워드 입력 만들기 – SetPasswordChar

사용자에게 문자열을 입력 받을 때 Edit 컨트롤은 텍스트를 표시합니다.하지만 비밀번호 입력처럼 사용자에게 표시하지 말아야 할 경우도 있습니다. 이 경우 아래와 같이 입력되면 안됩니다. 이 경우 CEdit의 SetPasswordChar와 GetPasswordChar 함수를 사용하면 문자열을 안보이게 할 수 있습니다.패스워드 모드로 변경하려면 CEdit 리소스에 암호 속성을 TRUE로 변경합니다. 이 경우 문자열 입력 시 패스워드 처리를 합니다. 패스워드 모드를 해제하고 싶으면 … Read more

[WinAPI] CString 문자열 추출 SpanIncluding, SpanExcluding

이번 글에서는 CString의 SpanIncluding과 SpanExcluding을 사용하여 포함 문자열, 포함하지 않는 문자열을 추출하는 방법에 대해 알아보겠습니다. CString을 사용하기 위해서는 아래 함수를 include 해야합니다. 헤더   cstringt.h MFC 전용 문자열 개체 atlstr.h 비 MFC 문자열 개체 SpanIncluding은 포함, SpanExcluding은 미포함하는 문자열을 추출합니다.예를 들어 “0123456789”에서 SpanIncluding 함수를 사용하여 0 ~ 4까지 문자열만 추출할 수 있습니다.위 두 함수는 문자열에 … Read more

[WinAPI] 파일 아이콘 가져오기 – 1. Shell_GetImageLists, SHGetFileInfo

이번 글에서는 파일 아이콘을 가져오는 작업을 해보겠습니다. 아이콘을 가져오는건 여러 가지 방법이 있지만 윈도우에서 기본적으로 제공하는 파일 아이콘들, 예를들어 텍스트 파일, 엑셀 파일, 파워포인트 파일 등, 이런 것들을 API를 사용해서 가져오는 방법에 대해 알아보겠습니다. Shell_GetImageLists와 SHGetFileInfo 함수를 사용하여 아이콘을 가져올 것이고, 최종적으로 아래와 같이 탐색기 화면을 만들어 보겠습니다. 참고로 파일 탐색기는 MFC Shell Tree, List … Read more

[WinAPI] 로컬 디스크 – 2. 로컬 디스크 용량 얻기(GetDiskFreeSpaceEx)

저번글에 이어서 이번 글에서는 로컬 디스크의 용량을 얻어오는 작업을 해보겠습니다. 디스크에는 전체 용량, 현재 용량, 사용 용량 등의 정보가 있습니다. 이러한 정보들은 GetDiskFreeSpace 함수를 써서 확인을 할 수 있습니다.GetDiskFreeSpaceEx 함수 사용을 위해 필요한 요구사항은 아래와 같습니다. 지원되는 최소 클라이언트 Windows XP 지원되는 최소 서버 Windows Server 2003 헤더 fileapi.h (Windows.h) 라이브러리 Kernel32.lib DLL Kernel32.dll GetDiskFreeSpaceEx 함수 원형은 … Read more

[WinAPI] 로컬 디스크 – 1. 로컬 디스크 목록 얻기(GetLogicalDriveStrings)

로컬 디스크 관련하여, 이번 글에서는 로컬 디스크 목록 얻는 방법에 대해 알아보겠습니다. 로컬 디스크는 내PC 폴더에서 볼 수 있으며 아래와 같이 C:\, D:\ 경로를 가집니다. USB를 꽂거나 하드를 계속 확장하게 되면 E:\, F:\, … 로 계속 늘어 나게 됩니다.이 목록을 GetLogicalDriveStrings함수를 사용하여 얻어보겠습니다. 함수 원형은 아래와 같습니다. 함수가 실패하면 0을 반환하고 GetLastError를 통해 확인 가능합니다.함수가 성공하면 … Read more

[Visual Studio 2019] 빌드 이벤트 사용하기

Visual Studio 2019 에서 빌드 이벤트에 대해 알아보겠습니다. 빌드 이벤트는 개발할 때 보단 배포, 혹은 유지보수 할 때 용이한 기능입니다.문자 그대로 빌드에 대한 이벤트이고, 프로젝트를 우클릭 하여 속성(Alt + Enter)에서 구성 속성 -> 빌드 이벤트에서 설정 할 수 있습니다. 빌드 전, 링크 전, 빌드 후 이벤트 중에서 빌드 후 이벤트를 많이 사용하니, 빌드 후 이벤트에서 명령줄을 입력해보겠습니다.우선 자주쓰는 … Read more

[WinAPI] GetFileVersionInfo 파일 버전 확인

일반적으로 EXE 실행 프로그램에는 파일 버전이 있습니다.프로그램 개발자들은 파일 버전으로 유지보수를 하거나, 업데이트 작업을 할 수 있습니다. 우선 간단하게 파일 버전을 확인하는 방법을 알아보겠습니다보통 C:\Program Files (x86)\Kakao\KakaoTalk 경로에 카카오톡 실행 파일이 있습니다. 해당 파일을 우클릭하여 속성 -> 자세히를 보시면 파일 버전이 적혀있습니다. 이제 코드를 작성하여 파일 버전을 읽어봅시다.필요 헤더 파일은 아래와 같습니다. 함수 원형은 아래와 같습니다. lpData를 … Read more

[WinAPI] TTS(Text To Speech) 만들어보기 – ISpVoice

Windows에서는 문자를 음성으로 출력할 수 있는 TTS(Text To Speech) 기능을 제공합니다.당연히 다른 상용화된 TTS 제품들과 비교하면 매우 낮은 수준이지만, 간단하게 코딩해서 사용할 수 있다는 것에 의미만 두면 되겠습니다.한글 TTS는 Windows 8 이후부터 지원합니다. 필요 헤더 파일은 아래와 같습니다. Visual C++에서 TTS는 COM을 사용하여 간단하게 만들 수 있습니다.COM을 사용하고, 이후 사용하지 않을 때엔 초기화와 해제를 해줘야합니다. … Read more

[WinAPI] FTP 클라이언트 프로그램 만들기(CFtpConnection) – 3

FTP 관련 마지막으로 CFtpConnection를 사용하여 FTP 클라이언트 프로그램을 만들어 보겠습니다. WinAPI에서는 CInternetSession과 CFtpConnection으로 FTP 프로그램을 정말 쉽게 만들 수 있습니다.CFtpConnection의 멤버 함수 설명은 아래와 같습니다. 멤버 함수 설명 Command FTP 서버에 직접 명령을 보냄 SetCurrentDirectory 현재 FTP 디렉터리 설정 GetCurrentDirectory 현재 디렉터리를 가져옴 GetCurrentDirectoryAsURL 현재 디렉터리를 가져옴(URL) CreateDirectory 서버에 디렉터리를 만듦 RemoveDirectory 지정 된 디렉터리를 서버에서 제거 … Read more