1. 리소스에(프로젝트이름.rc) 버튼에 입힐 이미지 파일 추가
- 리소스 추가 >> 가져오기 >> 파일 선택
- IDB_BITMAP1 로 추가됨
2. 프로젝트이름.rc\Dialog에 있는 다이얼로그 화면에 버튼 추가
- 버튼 >> 우클릭 >> 속성에서 ID 지정, Owner Draw 를 True로 설정
3. 버튼 >> 우클릭 >> 변수 추가
- 변수 형식 기본으로 CButton으로 되어 있음.
- 변수 이름 설정하고 마침
4. 프로젝트이름Dlg.h에 public 속성으로 버튼 변수 추가되어 있음
- CButton으로 되어있는 버튼 형을 CBitmapButton으로 강제 변경
5. 프로젝트이름Dlg.cpp >> DoDataExchange(CdataExchange* pDX) 메소드에 변수 추가 되어 있는 거 확인
6. 프로젝트이름Dlg.cpp >> OnInitDialog() 에 버튼변수명.LoadBitmaps( 버튼에 입힐 이미지, NULL, NULL, NULL ); 추가
- 여기서는 IDB_BITMAP1가 버튼에 입힐 이미지에 들어감
- LoadBitmaps 함수의 인자 순서는 첫 번째는 버튼이 아무 동작도 안할 때 그냥 보이는 이미지, 그 뒤는 버튼 클릭 시 이미지 이런 인자가 들어가면 됨. 여기서는 NULL로 설정했음
7-1. 이미지 크기에 버튼 크기를 설정하려면 위의 소스 코드 밑에 btn_Notepad.SizeToContent(); 추가
7-2. 버튼 크기에 버튼에 입힐 이미지를 맞추려면 다음 소스코드를 추가하고 4번에서 했던 CBitmapButton을 CMyBitmapButton으로 변경
- CMyBitmapButton은 CBitmapButton 상속받아서 메서드를 고친 클래스임 ( 출처 http://cloudtree.tistory.com/267 )
- MyBitmapButton 변수가 선언되어 있는 소스 파일에 #include "MyBitmapButton.h" 해줘야함
- 다 하고 나서 헤더파일을 찾는 동안 예기치 않게 끝났다고 에러가 한번 떴음. 그래서 stdafx.h를 include 해줌
( 참고 http://ingorae.tistory.com/1656 )
여기까지 이미지 버튼 설정
7. 프로젝트이름.rc\Dialog에 있는 다이얼로그 화면에 추가한 버튼을 더블 클릭
- 프로젝트이름Dlg.cpp 에 메소드 자동 추가됨
- 해당 메소드 안에 ShellExecute 함수 추가
- 만약 경로를 지정해서 프로세스를 실행 시키는 경우에는, 경로에 들어간는 백슬래쉬 \를 \\로 바꿔줘야함. ( 이스케이프 시퀀스 )
ex ) C:\\Program Files (x86)\\folder\\program.exe
void CwTest4Dlg::OnBnClickedNotepad()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
ShellExecute(NULL, _T("open"),_T("notepad.exe"),NULL,NULL,SW_SHOW);
}
'Windows > MFC 강좌 & Tips' 카테고리의 다른 글
Dialog based 그림판 (2) | 2017.01.04 |
---|---|
[나만보기] (1) 로그인 기능 + 위젯 띄우기 (0) | 2017.01.03 |
(1) 로그인 기능 + 위젯 띄우기 (2) | 2017.01.03 |
MFC Dialog 호출 시 실행되는 메세지 순서 (0) | 2017.01.03 |
[Widget] CreateProcess & 프로세스 중복 방지 (0) | 2016.12.21 |