[MFC] 컨트롤 탭 순서 변경하기

MFC 프로그램을 만들다 보면 대화 상자의 컨트롤의 탭 순서가 이리저리 움직일 때가 있습니다.아래와 같은 경우가 대표적인 경우입니다. 이렇게 탭 순서가 무작위로 되어있으면 사용자 편의성을 전혀 고려하지 못합니다. 그럴 경우 리소스 뷰에서 Ctrl + D를 누르게 되면 아래와 같이 대화상자에 컨트롤 마다 조그만 번호가 표시됩니다. 이 상태에서 원하는 탭 순서대로 마우스 왼쪽 클릭을 하게 되면 숫자가 변경됩니다. … Read more

[MFC] HDC 텍스트 출력, TextOut, CFont

HDC에 도형을 그리는 방법은 여기를 참고해주시기 바랍니다. 오늘은 HDC에 텍스트를 출력하는 방법을 알아보겠습니다.Static Control을 하나 생성해주시고 ID를 IDC_STATIC_DISP로 합니다. 그런 다음 확인버튼을 더블 클릭 하여 아래와 같이 코딩해줍니다. 실행 시켜 보면 아래와 같이 출력 됩니다. 위 방식대로 하면 텍스트 주변에 하얀색 배경이 그려지게 됩니다. 이 색을 변경하고 싶으시면 TextOut함수를 호출 하기 전에 아래 SetBkColor 함수를 사용하시면 … Read more

[MFC] Drag & Drop 구현하기 – Win 10 에서 안될 때 해결 방법

이번 글에서는 대화상자에 파일을 Drag & Drop 하는 방법을 알아보겠습니다. 대화상자 생성 후, 아래와 같이 대화상자 속성->동작->Accept Files를 TRUE로 변경합니다. 그리고 아래와 같이 OnDropFiles를 추가해줍니다. OnDropFiles에 아래와 같이 코딩합니다. 실행 시켜서 Drag & Drop을 확인해 봅니다. —————————————————————————— Windows 10에서 MFC의 Drag & Drop이 안되는 경우가 있습니다.(관련 링크) 그럴 경우 OnInitDialog에 아래와 같이 추가하시면 됩니다. p.s 그래도 … Read more

[MFC] 시간 얻기 – 2 , CTime, CTimeSpan

이전 글에 이어서 시간 얻기에 대해 알아보겠습니다. CTime과 CTimeSpan을 사용해서도 시간을 얻어올 수 있지만 이 두개의 클래스를 이용하면 시간계산과 차이를 빠르게 알 수 있습니다. 프로젝트를 하나 생성해주고 아래와 같이 Static Control과 버튼을 만들어줍니다. 1. 시간 얻기 “CTime” 버튼에 아래와 같이 코딩합니다. 그러면 아래와 같이 현재 시간을 표시합니다. 2. 시간과 시간 차이 계산하기 만약 올해 초(2020년 … Read more

[MFC] 시간 얻기 – 1 , SYSTEMTIME, GetSystemTime, GetLocalTime

안녕하세요, 오늘은 시간을 얻어오는 함수에 대해서 알아보도록 하겠습니다. SYSTEMTIME을 사용하여서 현재 시간을 알아와보도록 하겠습니다. 프로젝트를 하나 생성해 줍니다. 그리고 시간 표시를 위해 Static Control과 버튼을 만들어 줍니다. 그리고 “GetSystemTime” 버튼을 더블클릭 하셔서 아래와 같이 코딩합니다. 위 내용대로 코딩 한 뒤 실행하면 아래와 같이 표시됩니다. GetSystemTime 함수는 UTC 기준으로 시간을 가져오기 때문에 정확하지 않습니다. 그럴 경우 … Read more

[MFC] 대화상자 메뉴 만들기

오늘은 아래 그림과 같이 mfc 대화상자에 메뉴를 만들어 보겠습니다. 대화상자 프로젝트를 만들어 주시고, 아래와 같이 리소스를 추가하여 메뉴를 만들어 줍니다. 위 작업을 하시면 보시는 것과 같이 메뉴가 추가됩니다. 메뉴도 추가 해보고 메뉴 아이디도 바꿔봅니다. 각각의 메뉴에도 아이디를 입력해 줍니다. 그리고 대화상자 속성에서 Menu에 방금 만들어준 메뉴 리소스의 ID를 입력합니다. 이 상태로 실행 시켜 보면 대화상자에 메뉴가 … Read more

[MFC] WM_COPYDATA

저번에 SendMessage와 PostMessage에 대해 글을 썼었습니다. 몇 번 사용해보시면 알겠지만 사용자 메시지를 정의하여 SendMessage와 PostMessage로는 많고 다양한 데이터를 보낼 수 없습니다. 그럴 때는 WM_COPYDATA를 사용하여 구조체를 전송하면 프로세스간 통신에서 데이터를 쉽게 보낼 수 있습니다. 대화 상자를 하나 생성해 주시고 아래와 같이 Static과 Edit Control을 만들어 줍니다. Static Control은 m_stMyHwnd로, Edit Control은 m_edTargetHwnd로 선언해줍니다. 그리고 OnInitDialog에 … Read more

[MFC] 대화상자 배경, 버튼 이미지 바꾸기

오늘은 Bitmap을 읽어와서 대화상자와 버튼을 바꿔보도록 하겠습니다. 우선 아래 비트맵 리소스를 다운받아서 리소스뷰에 추가해주세요. 그리고 비트맵 리소스의 아이디를 아래와 같이 설정합니다. 대화상자의 색상을 바꾸기 위해 아래 비트맵 리소스를 다운받아주세요. 우선 헤더파일에 아래와 같이 두개의 변수를 선언합니다. OnInitDialog에서 아래와 같이 리소스를 읽어옵니다. OnPaint 함수를 아래와 같이 코딩합니다. Bitmap 이미지를 대화상자 크기에 맞춰 표시한 겁니다. 위 코드까지 … Read more

[WinAPI] HCURSOR 사용법

오늘은 마우스 커서를 바꾸는 방법을 알아보겠습니다. 을 알아보겠습니다. 우선 그전에 아래 Cursor.zip 파일을 다운받아서 압축 해제 후 res 폴더에 넣어주세요. 그리고 리소스 뷰에서 3개의 커서 파일을 추가해줍니다. 각 리소스의 아이디는 색에 맞게 IDC_CURSOR_RED, IDC_CURSOR_GREEN, IDC_CURSOR_BLUE로설정합니다. 1. 대화상자 내에서만 커서 바꾸는 법아래와 같이 버튼 하나를 만든 후 더블클릭으로 이벤트 처리 함수를 만들어줍니다. 헤더파일에 대화상자 내에 표시할 HCURSOR m_hCursorIn, 그리고 BOOL m_bMouseSet을 선언해 줍니다. OnInitDialog에 아래와 같이 … Read more

[MFC] 응용프로그램 아이콘 설정

오늘은 응용프로그램 아이콘을 설정하는 법을 알아보도록 하겠습니다. 이 사이트에서 적당한 아이콘 파일을 다운받아줍니다. 다운받은 .ico 파일을 프로젝트 폴더 -> res 폴더 위치에 복사해주시길 바랍니다. 그리고 아래와 같이 리소스 뷰 -> 리소스 추가를 하시고 방금 복사한 파일을 선택 해주시길 바랍니다. 그러면 아래 그림과 같이 IDI_ICON1이 추가 될 겁니다. 대화상자 클래스 생성자를 보시면 아이콘을 읽어오는 곳이 있는데 그곳에 위에 … Read more