컴퓨터공부/MFC

MFC 팁 모음

achivenKakao 2006. 9. 15. 18:02

MFC에 대한 유용한 팁 모음

자료출처 : 마이크로소프트웨어 잡지, www.devpia.com, www.codeland.co.kr

- Control
에디트 박스에서 엔터키 확인 방법
CListCtrl에 컬럼 넣기
에디트 컨트롤을 마음대로
컨트롤을 사용할 수 없게 처리하려면
컨트롤 크기를 뷰에 맞추기
윈도우 95/NT에서 아이템 개수 제한 여부
트리 컨트롤을 이용한 애플리케이션 만들기
체크 리스트박스를 템플릿에 올리기
리스트박스 깜박임 멈추기
입력 컨트롤에 텍스트를 추가하려면
입력 컨트롤에서 허용하는 문자 제한하기
줄 단위로 끊기는 CEditView를 만들려면
CEdit에서 엔터키 감지하기
CListCtrl에서 팝업 메뉴 구현
다이얼로그 에디트 박스에서 값 입력받기
CtrlList에서 컬럼 고정시키기
탭 콘트롤의 크기를 바꾸는 법
프로퍼티 시트의 탭에 아이콘 넣기
리스트박스 엔터처리
에디트박스에서 커서를 임의의 위치에
동적으로 컨트롤 크기 변경하기
콘트롤의 사이즈나 위치 변경시 깜박임 현상 줄이기
CAnimateCtrl 등에서 WM_LBUTTONDOWN 과 같은 마우스 메시지 처리
트리컨트롤의 글자색을 마음대로 바꾸기
버튼 콘트롤 캡션 바꾸기
버튼에서 메뉴명령을 실행하려면

- Scroll Bar
프로그램을 완성한 후 스크롤바를 추가하려면
스크롤바를 없애려면

- Doc / View
Doc 배열을 View에서 사용하는 방법
도큐먼트/뷰 구조
도큐먼트 없는 애플리케이션 만들기
MDI 프로그램 시작시 뜨는 도큐먼트 없애기
도큐먼트와 멀티 뷰간의 통신
분할 윈도우에서 뷰 바꾸기
투명한 뷰 만들기
뷰 클래스 변수 제어
뷰 클래스에서 프레임 클래스
SDI에서 뷰 전환하기
뷰의 배경색 바꾸기

- SDI / MDI
MDI 프로그램 시작 시 차일드 윈도우를 띄우지 않으려면
최대화된 SDI 윈도우를 실행하려면
MDI에서 Child LIST를 얻는 방법
MDI에서 Child View Handle 구하는 방법

- Dialog
다이얼로그에서 뷰 포인터 액세스
윈도우 3.1의 다이얼로그 구현
모달 프로퍼티시트 다이얼로그에서 버튼 제거
다이얼로그 폰트를 변경하려면
프로퍼티 시트에 공통 다이얼로그 박스를
다이얼로그박스에 툴팁을 추가하려면
디렉토리 선택 다이얼로그 띄우기
다이얼로그에서 키 값 메시지 처리
API로 파일 오픈 대화 상자 띄우기
다이얼로그박스를 중앙에 오게 하려면 
다이얼로그 박스없이 뷰 화면에 버튼 만들기
다이얼로그 박스 대신 프레임 생성하기 (다이얼로그 박스에서 뷰 사용하기)
대화상자에서 엔터 누르면 다음 컨트롤로
Dialog Box 생성자를 통해 데이터를 전달하는 방법
대화상자에 비트맵 올리기
다이얼로그 리소스대로 폼뷰 크기 설정하기
CFileDialog 인자 사용법
ESC키로부터 Dialog 사라짐을 방지
플로피디스켓 포맷 다이알로그 호출하기
다이얼로그 박스 동적으로 키우기
모달리스 다이얼로그에서 ESC키와 ENTER키 무시하기
윈도우 접기
연결 프로그램 찾기 다이얼로그 띄우기
Dialog의 Min/Max/Close Box를 Run Time Show/Hide

- Splitter
스플리터 윈도우의 크기를 고정하려면

- Frame Window
창의 트래킹 크기 제한
윈도우를 중앙에 위치
캡션바에 애플리케이션 이름만 표시하려면
클라이언트 영역을 클릭해 윈도우를 이동하려면
메인프레임이 차지하는 행의 수를 찾으려면
캡션 외에 다른 곳을 클릭해 윈도우를 이동하려면
캡션바가 없는 윈도우의 이동
애플리케이션 위저드로 생성한 창의 기본 스타일을 변경하려면
방패모양 윈도우 만들기
투명한 윈도우를 만들려면
타이틀 바에 비트맵 입히기
틀이 없는 윈도우 (SDI에서 메뉴 없애기)
전체 화면 보기 옵션 만들기

- Menu
프레임 메뉴를 동적으로 변환
메뉴 항목을 사용할 수 없게 하는 MFC 특성을 무효화하려면
시스템 메뉴를 없애려면
MFC에서 메뉴제거

- ToolBar / StatusBar
상태바 모양 변경
상태바에 작업진행 표시
툴바 숨기기/보이기 옵션 주기
상태바와 툴바의 포인터 얻기
2개의 툴바를 한줄에
컨트롤바(툴바, 다이얼로그바) 보이기/숨기기
상태바에 그림 출력 

- Bitmap / Image
오버랩 이미지 표현하기
화면의 일부분을 비트맵으로
비트맵을 움직이게 하려면
BMP 파일에 투명색을 지정하는 법
바탕 화면에 그림 그리기
COLORREF 에서 r, g, b 를 정수형으로 뽑아보자
투명 256 비트맵

- DLL
MFC 확장 DLL이란?

- Print
OnPrint()로 프린트 기능을
다이얼로그에 프린트 기능을 넣으려면
비주얼 C++에서 프린트 미리보기 구현
프린트 용지 크기 제어
프린트시 가로 제어에 대해

- Hardware Control
프린터 포트 제어방법
VC++에서 시리얼 포트로 데이터 비트 발생
디스크 섹터로의 쓰기
I/O 포트 제어법
<Ctrl-Alt-Del>로 프로그램을 종료하지 못하게
키보드로 마우스 커서 움직이기
여러가지 시스템 종료 기법
버튼으로 해당 윈도우 종료하기
CD, 플로피등의 디스크 삽입 자동 판단루틴
ALT+F4로 종료안되게 하려면
F10 키를 처리하기
드라이브 포맷하기

- Data Type (Converstion, Detect, Calculate)
CString 타입의 SQL 문장을 인자로 넘기려면
아스키 값을 Hex 값으로 바꾸는 함수
데이터 형변환 (ASCII data -> 16진수)
LRESULT와 CALLBACK의 데이터형에 관해
문자열을 16진수로 변환하는 방법
VC++ 복소수 쓰기
float형을 int로 빠르게 cast 하는 방법
문자열에서 코드종류 알아내기
조합/완성형 한글코드 판단 소스
조합<->확장완성형 변환 소스
CString 형을 char* 형으로 바꾸기
한글을 판정하는 방법
실수 나눗셈 연산을 정수 연산으로 하기 

- File / Directory / Folder
파일을 링크드 리스트 형식으로 저장하려면
텍스트 파일에서 한 줄씩 읽어와 출력하려면
여러 줄에서 한 줄씩 차례로 읽는 방법
여러개의 파일 한꺼번에 열기
하드에서 특정파일 찾기
파일 찾아보기 기능 구현
대용량 파일 읽기(빠르게...)
대용량 파일 빠르게 읽기 2
디렉토리 만들기(서브 폴더 포함) 
응용 프로그램이 실행된 디렉토리를 찾으려면
현재 디렉토리의 정보를 알아내는 법
파일 등록정보 보여주기
제일 짧은, 파일 크기 알아내는 함수

- Message
윈도우 프로그램 시작할 때 메시지
마지막 메시지를 얻으려면
윈도우에 전달된 마지막 메시지 얻기
수동으로 메시지 맵에 연결하기
모든 Top Level Windows 에게 메세지 보내기
친절한 메시지 WM_NULL

- Debug / Error Handling / Class Wizard
디버깅으로 실행 진행을 보려면
예외처리란?
릴리즈 모드에서 에러가 발생하는 경우
생성한 Class를 간단히 완전제거
릴리즈 버젼 실행시 런타임 에러 찾아내기
릴리즈 모드에서 브레이크 포인트 사용하기 
Console Window 에 Trace 정보 보내기
프로파일링[profiling]
버그 잡기
리모트 디버깅 하기
듀얼 모니터 디버깅 하기
error LNK2001: unresolved external symbol _main 
자신만의 type 을 Watch Window 에서 보는 방법 

- Font
시스템 폰트 얻기
글자 크기 변경
이탤릭체 텍스트를 출력하려면
제어판에서 큰글꼴로 설정했을경우에도 일정한 크기의 글꼴 지정
다이얼로그의 폰트를 변경하려면

- Resource
다른 프로젝트로부터 리소스 복사
외국 리소스를 한글 리소스로 수정하기

- Console
콘솔에 문자열 출력하기
도스&콘솔 프로그램 관련(창안띄우기,StdOut, Wait)
Window에서 콘솔 얻기(API)

- 위치, 좌표
응용 프로그램의 위치를 보존하려면
애플리케이션의 이전 위치를 보존하려면
MFC에서 상대좌표 구하는 방법

- System
응용 프로그램을 최소 크기 만들기
사용 가능한 시스템 메모리 용량
다른 프로그램을 실행할 땐 WinExec
캐럿의 위치를 알려면
다른 애플리케이션 제어 방법
프로그램 작성후 MRU 기능 삭제 및 변경
DC 핸들로 CDC 객체를 만들려면
기본 브라우저를 띄우려면
항상 최상위 창을 유지하려면
현재 작업중인 목록을 만들려면
베이스 클래스를 변경하려면 (CView -->CScrollView)
프로그램 시작시 About박스를 표시하려면
멤버 함수에서 다른 함수의 포인터 호출
핸들이란 무엇인가요
베이스 클래스 바꾸는 방법 (CDialog --> CPropertySheet)
프로그램 시작 시 한/영키의 변환
밀리초를 구현하는 방법
Create 함수와 OnCreate 함수의 차이점
동영상 반복 기능
비주얼 C++에서 엔터키 처리법
새창을 활성화시키기 않고 생성시키기
더블버퍼링 사용법
각 클래스의 포인터 얻기
작업표시줄에서 프로그램 숨기기
객체에 툴팁달기
단 한 개의 프로그램만 실행하기
바탕화면의 월페이퍼 변경하기
Visual C++의 유용한 단축키
클래스 이름 등록방법
fscanf()에서 쓸데 없는 값 읽지않고 버리기
Toggle 기능 구현하기
한글 윈도우에서 일본어 프로그램 빌드하기
#과 ##
일반적인 윈도 소멸 순서
해상도 변경하기
화면 지우기
byte alignment
makefile 을 .dsw 로 바꾸어 보자
new로 생성된 포인터를 안전하게 지우자. SafeDelete
레지스트리를 이용하여 파일명을 인자로 실행파일 실행하기(ShellExcecut가 아님)
매크로 사용하기
시스템 강제로 다운시키기
Win9x VS Win2000,WinNT 시스템 종료하기
트레이의 아이콘이 사라지지 않게
특정한 다이알로그 박스에 버튼을 누른 효과를 내기
프로그램내에서 한영전환을 하는 방법
프로그램 실행 시 자기 프로그램 패스 구하는 방법
프로그램의 중복 실행 방지
ActiveX를 dialog base처럼 만드는 법
인라인 어셈블러에 대한...
C++에서의 const 포인터에 대한 정리
CString으로 문자열 리소스를 사용하자
MFC의 역사
restart in NT
WIN32_LEAN_AND_MEAN

      < 2000년 11월 > // 작성중....
콘솔 프로그램과 ODBC 연결
버튼을 이용한 익스플로러 실행
keybd_event에서 한글 문제
MemDC 내용을 BMP 파일로 만들기