[MFC] 종료 시 자신을 삭제하는 프로그램을 만드는 방법

기획팀에서 1회만 실행되는(종료되면 삭제되는) 프로그램을 만들어 달란 요청이 간간히 들어옵니다.그때마다 어떻게 했더라 매일 검색하고 찾는 나 자신을 보면서 기록합니다. 이번 글에서는 프로그램 종료 시 자기 자신을 삭제하는 프로그램을 만드는 방법에 대해 알아보겠습니다.파일을 삭제하는 API 함수는 있으나, 윈도우에서는 실행 중인 프로그램(자기 자신)의 .exe파일을 삭제 할 수 없으므로,.exe 삭제를 batch 파일에서 해줘야 합니다. 아래는 MFCApplication1.exe에서 batch 파일을 … Read more

[Visual C++] 여러 개의 리소스 파일 및 헤더 파일 사용 하기

이번 글에서는 여러개의 리소스 파일과 헤더 파일을 사용하는 방법을 알아보고 이것으로 무엇을 할 수 있는지 알아보겠습니다. Resource.h 와 .rc파일 리소스는 프로그램 사용자에게 정보를 제공하는 인터페이스 요소입니다. 비트맵, 아이콘, 커서 등등 모두 리소스 말합니다. 이러한 리소스는 리소스 뷰와 편집기를 통해 수정할 수 있으며, Visual C++ 마법사에서 자동으로 생성 및 수정을 해줍니다. 프로젝트 내에서 리소스 파일은 여러 … Read more

[MFC] Grid Control 사용하기

회사 업무로 MFC에 Grid Control을 조사하는 일이 주어져서 정리차 글을 씁니다. MFC에는 Grid Control이 없습니다. 해서 여기저기 찾아보니 아래 링크에 적당한 무료 라이브러리가 있습니다.링크: MFC Grid Control 적당히 잘 사용하면 아래와 같은 그리드를 만들 수 있습니다. 개발 환경은 Visual 2019인데 몇 가지 이슈사항이 있어 위 링크에서 다운받아도 바로 사용할 수가 없습니다.그래서 일부 수정을 해줘야하는데, 글로쓰면 … Read more

[MFC] 툴바 붙이기 – CToolBarCtrl

회사에서 뷰 화면에 메뉴를 ‘이쁘게’ 만들어 달라는 요구사항이 들어왔습니다. MFC 화면에 이쁘게라니.. 요구 사항이니 CToolBarCtrl 사용하여 아래와 같은 화면을 만들어 보겠습니다. 메시지 정의, 멤버 변수&함수 선언 먼저 뷰나 대화상자를 생성한 뒤 헤더파일에 아래와 같이 메시지들을 정의합니다. 멤버 변수도 선언해줍니다. 이 변수들은 생성자와 소멸자에 아래와 같이 코딩해주세요 각 동작에 대한 멤버 함수들도 선언해줍니다. 툴바 생성 우선 툴바를 생성해보겠습니다. CreateToolBar를 아래와 같이 정의해주고, … Read more

[WinAPI] 작업 스케줄러 등록 – 관리자 권한 프로그램 부팅 시 자동 실행

최근  프로젝트를 진행하면서 발생했던 이슈에 대해 정리 할겸 글을 씁니다. 컴퓨터를 부팅했을 때 프로그램을 자동 실행 방법은 여러 가지가 있습니다. 1. 시작 프로그램 폴더에 파일 이동 Windows + R 키를 눌러 shell:startup를 입력하면 시작프로그램 폴더를 볼 수 있습니다.여기에 exe 파일을 이동하면 부팅 시 프로그램이 실행 됩니다. 2. 레지스트리에 등록 Windows + R 키를 눌러 regedit을 입력하면 레지스트리 편집기가 실행됩니다.HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion에 … Read more

[Visual Studio] Setup 프로젝트 만들기

이번 글에서는 Visual Studio에서 Setup Project를 이용하여 설치 파일을 만들어보겠습니다.아래 순서대로 작업하시면 기본적인 설치 파일이 만들어집니다. ‘솔루션 우클릭’->’추가’->’새 프로젝트’를 선택하여 ‘Setup Project’ 선택합니다. ‘프로젝트 이름 입력’ 후 ‘만들기’ 버튼 클릭합니다. 정상적으로 생성 되었으면 아래와 같이 Setup Project가 생성되고, File System 뷰를 볼 수 있습니다. File System에 있는 3개의 폴더의 의미는 다음과 같습니다. Application Folder 설치 … Read more

[WinAPI] CWnd로 시계 화면 만들기 – 파일 첨부

이번 글에서는, 커스텀 화면을 만들어야 하는 경우 어떻게 해야하는지 알아보겠습니다. 장문의 글이 될 것 같네요.우선 개발로 들어가기 전에 몇가지 알아 보겠습니다. 1. Windows 화면 구조 PC를 켜면, Windows OS가 구동 되어 바탕화면이 보일 것이고, 바탕화면의 프로그램을 실행 시키면 프로그램이 모니터에 표시됩니다. 이때 모니터에 표시되는 바탕화면, 프로그램, 프로그램의 버튼, 리스트 컨트롤 등등 모두 핸들을 가지고 있으며, 화면 … Read more

[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