MFC TIP [퍼옴]
MFC를 하다보니. 모르는게 많아서 찾아보니.. 좋은 정보가 있어서 또… ctrl+c ctrl+v… ㅜㅜ 언젠가는 나도 자료를 줄수 있는 능력이 되길 MFC(Microsoft Foundation Class) [출처]http://blog.naver.com/qkrals01/130019922163
- 트레이 아이콘(Tray Icon) 사라지는 버그 막기- 매핑 모드 사용하여 확대 축소 구현하기- 인터넷 익스플로어 제어와 관련된 Knowledge Base- 선택 영역에 줄번호 붙여주는 매크로- Web으로부터 컨트롤을 다운받아서 실행하는 VC예제- 현재 작업중인 프로젝트의 폴더를 열어주는 매크로- 로컬 폴더에 있는 DLL 사용하게 만들기- Dialog Base 프로그램을 Tray에 등록할 때 문제점- FlashWindow를 사용하여 내 프로그램의 존재를 알리자- 자신의 IP 얻기- 스플리터 윈도우 위치 고정하기- Dialog Box의 Control에 Tooltip넣기- 타이틀 바가 없는 프로그램에 아이콘을 나오게하는 법- 슈퍼 클래싱과 서브 클래싱- 마지막 에러코드 Watch창으로 나타내기- 네트웍 어드레스 변환 방법- CWinApp에서 명렁어 인자 분석 방법- ToolBar에서 256이상의 Color사용- 특정 확장자명으로 프로그램 실행시키기- Volatile- 어셈블된 코드 보기- ATOM을 이용한 프로세스간 데이터 공유- WM_COPYDATA 를 사용한 메세지 전송- TrackMouseEvent 구현하기- 필요없는 warning 은 보기 시러
](http://www.debuglab.com/knowledge/nowarning.html)- 파일의 특정 부분의 warning level을 지정하기- CFileDialog에서 초기 경로명 지정하기- 256색 이상의 Bitmap ImageList 만들기- List Control 에 다른 Control 넣기- 초 간단!! 시스템 이미지 리스트 얻어오기- CStringArray 정렬하기- MFC Dialog Box에서 자신의 Class Name설정- 사용자 정의 Common Dialog 만들기- 사용자 정의 Common Dialog에서 Common Dialog자원의 위치 설정- 자기 프로세스의 복사본을 만드는 방법- 일반적인 Child Window 만들기- CSocket 과 CAsyncSocket에서 Thread문제- SearchPath()의 리턴값 알아보기- 화면 캡쳐 소스- Dll에 breakpoint 설치하기- 윈앰프처럼 TaskBar와 SystemTray 마음대로 주무루기- Winamp 처럼 벽에 붙이기- Title바 마음대로 하고 싶나요?- Toolbar안에 다른 Control넣기- 문자열 검색 API- 자신만의 윈도 class name을 가지자- [Coverage가 90% 이하면 안돼요~- _ASSERTE 가 GetLastError()를 망친다- Explorer처럼 툴바에 Text 넣기- MDI(Multiple Document Interface) application에서 초기 뷰 없애기- Dll 찾는 순서- DLL 파일의 이름 알아보기- 메인 프래임 윈도우에 얼굴을 부여하기- Break Pointer 는 INT 3 으로 통한다!!- 두 변수의 값을 바꾸는 환상의 매크로- 안전하게 free, delete하는 방법- 윈도에 포커스가 가지 못하게 하기- TreeCtrl 에서 Context Menu 사용하기 -번역은 나중에- 랭귀지 팩을 만들자!! - Visual C++ 이 만드는 파일의 의미- 툴바에 Dropdown버튼 넣기- VC++의 Quick Macro- VC++에서도 Regular Expression으로 검색할 수 있다- Dll에서 제공되는 함수들 보기- 공유 섹션 만들기- 화면 보호기 제어하기- 바탕화면, 즐겨찾기, 내 문서 등의 패스얻기- CAsyncSocket 에서 도메인 주소 바로 사용하기- bool과 BOOL의 차이- TRACE를 잠깐 못쓰게 만드려면- DirectX에서 리턴값 확인은 FAILED매크로를 사용하도록 하자- DirectDraw에서 Control Box 사용하기- CFrameWnd가 아닌 윈도우에서 툴바의 툴팁 출력하기- Dialog Bar 만들기- Toolbar에 버튼 추가하기- 화면 정보 얻어오기- 절전 기능 및 화면 보호기 제어하기- 절전 모드로 진입을 거부하는 방법- Console 프로젝트와 Windows 프로젝트 바꾸기- Ansi 문자열과 Unicode 문자열 바꾸기- 문자열을 _T() 형으로 바꿔주는 매크로- Resource ID 이름 짓는 방법- Little or Big Endian- Alt+F4 키로 종료되는거 막는 방법- 프로그램내에서 한/영 전환하기- pair 라는 것의 용도는?- WORD 특정 비트값 알아내기- 일반적인 윈도우 소멸 순서- 메모리 DC 사용하기- DirectDraw에서 256색 Bitmap 간편히 사용하기- Source Safe과 Project를 분리시키기- 실수(소수점) 나누셈 연산을 정수 연산으로 하기- 프로그램안에서 Registry 이름 지정하기- 특정 Registry Key안의 Value값 가져오기- Registry에 File Icon등록해주기- ‘객체 삽입’ 상자 없이 객체 삽입하기- 윈도우즈 강제로 종료하기- 재밌는(?) 시스템 강제로 다운시키기- Document없는 CRichEditView에 Ole객체 삽입 막기- 비교 연산자를 위한 예약어들- Dialog Based 프로그램에서 가속키 기능 넣기- 투명한 윈도우 만들기 (w2k만)- 현재 실행되고 있는 자신의 경로와 파일명 가져오기- 프로그램 한번만 실행하기- MFC 모듈의 상태 데이터 관리하기- Dialog Based 프로그램에서 ‘최근 사용한 파일 목록’ 메뉴 넣기- Override를 통해 잃어버리는 것들- 특정 파일의 Property 창 띄우기- Serialize를 이용한 객체 복사하기 (Copy constructor)- CWinThread로 UI Thread 만들기- Socket에서 완벽한 Receive처리- [API/SHELL] 디스크 복사 및 포맷…- [API/SHELL] 프로그램 추가 삭제 / 원도 구성 요소 추가 다이얼로그 띄우기- 원하는 확장자파일만 지우기- CEdit control의 font 바꾸기- 연결 프로그램 찾기 다이얼로그 띄우기- Visual Basicⓡ처럼 property 다루기- Func()- [ATL] 새로운 인터페이스 추가하기- 생성자 두 번 호출되는 버그- LastError를 보여주는 Debugging Trace Macro- 할당된 블록의 크기 구하기- [Win32/C++]템플릿을 이용한 동기화 클래스 만들기- Visual Studio Macro- auto_ptr- explicit- Unicode/MBCS(DBCS)/ANSI/TCHAR- String Conversion Macro- upper_bound/lower_bound- stringstream- CD Rom 드라이브 구하기- WebBrowser 로 부터 키보드 메세지 가로채기- CDROM Insertion / Removal 감지하기- 입력 컨트롤에서 허용하는 문자를 제한하려면- History ComboBox- HBITMAP을 BMP 파일로 만들어 주는 함수- FTP 로 파일 전송하기- ATL Browser - SmileBrowser v0.1- 레지스터 설명- 어셈블러 쉽게 쓴 강좌- 내가 만든 타입 자동으로 확장하기- watch 창에서 심볼의 출력 타입 정해주기- Thread 생성시 어떤 API를 사용해야 하는가?- LAN에 연결된 모든 스테이션에 broadcasting하기- ActiveX를 무조건 다운로드 하게 하기- ATL Debugging Support #1- 웹페이지가 이동될때 진입하는 함수- GetMessage() PeekMessage()- based addressing- 다이얼로그 리소스의 실제 크기 얻기- 문자열에서 드라이브,디렉토리,파일이름, 확장자 정보 가져오기- Bitmap 이미지 resizing 하기- 프로파일링(Profiling) 기능 활용하기- template으로 구조체 초기화 하기- 사용하지 않는 인자에 대한 warning 없애기- 포인터 변수를 검증하기위한 매크로- #define 보다는 const와 inline을 사용한다.- malloc과 free 보다는 new와 delete를 사용한다.- 메모리가 모자랄 경우에 대비한다.- operator new 와 operator delete 작성시 관례를 따른다.- 캐럿의 위치 알기- URL을 파싱하자- Lite control에서 이벤트가 가능하게 하기- 소스로 바로가는 TRACE- Watch 창에서 함수 실행하기- 파일로 트레이스 하도록 바꾸기 (3줄이면 됨)- MFC에서 NULL을 비교하는 것은 의미가 없다.- Floating-Point Error가 Exception을 발생하도록 만들기- First-chance exception 에서 Stop 하도록 만들기- exception 클래스 확장하기- INF file Architecture- GUID 생성하기- VC의 IDE를 편하게 쓰는 도구[1]- VC의 IDE를 편하게 쓰는 도구[2]- new의 정상 형식을 감추지 않는다.- operator new를 작성한다면 operator delete도 작성한다- 동적으로 할당되는 메모리를 갖는 클래스를 위해서는 복사 생성자와 치환 연산자를 선언하라.- 생성자에서 치환보다는 초기화를 사용한다.- 클래스에 선언된 순서에 따라 멤버 초기화 리스트에 멤버들을 나열한다- Edit 컨트롤에서 Tab 키 넣기- [VB] QueryInterface하는 방법- [ActiveX] VBScript에서는 QueryInterface가 않된다.- [ActiveX] VBScript에 User-Define Interface 노출하기- ATL 디버깅 정보 출력하기- [ActiveX] 키보드 메세지 받기- OLE Activation 될때 컨테이너의 툴바 살리기- 인터넷 Short-Cut 만들기- StrouStrup의 좋은 기사 3개 Link- WTL 3.1- WTL 도움말- CreateFile 이용시 주의사항- DLL 로드 시간 성능 최적화 하기- GUID를 문자열로… 문자열을 GUID로- 트레이 메뉴가 사라지지 않을때- 대용량의 파일 순식간에 읽기- Error LNK2001: ‘_WinMain@16’: Unresolved External Symbol- Hatch 가 밀려나오는 브러시 수정하기- Brush 의 패턴을 사용하여 스킨 구현하기- ATL Object가 한글 폴더 있으면 등록 안되는 버그- ActiveX 컨트롤에서 사용할 디지털ID 발급 받는 방법- [VB] 패키지 마법사 최적화 하기- MFC 라이브러리에 동적으로 링크된 정규 DLL- 원격 디버깅 하기- 왼쪽에 이미지 들어가는 메뉴추가하기- 2000 에서 나오는 파일 저장 다이얼로그 사용하기- 콤보박스나 에디터 상자에서 입력 자동 완성 기능- 폴더내의 dll 한 번에 등록하기- 폴더 선택 다이얼로그 사용하기- 윈도우즈 작업 관리자 기능 살펴보기- Delayload 적용시키기 (매우 쉬움)- Dll Rebase 시키기 (역시 쉬움)- Win32 버퍼 오버플로어 관련 문서- local folder에 있는 dll 사용하게 만들기- ActiveX Control을 View에서 사용하기- Web으로부터 컨트롤을 다운받아서 실행하는 VC예제- 인터넷 익스플로어 제어와 관련된 Knowledge Base- w2k에서 Process Tree 보기- 줄번호 매겨주는 매크로 입니다.- DbgChooser from Bugslayer- 특정 컨트롤에서 한글을 입력받고 싶지 않을때- 홈페이지 소스 가져오기- OPCODE 설명서- ASCII 코드 설명서- inline assembly에서는 C++맴버변수로 접근 불가- Unicode Conversions in Visual C++- 실행 파일(바이너리)에서 파일 이름 가져오기- 디버깅 관련 KB(Knowledge Base) 모음집- 디버깅 관련 책 정보- Coding Techniques and Programming Practices- The Basics of Programming Model Design - [ActiveX] automation을 편하게 쓰는팁- IME 입력기 예제입니다.- 특정 DLL 을 사용하는 프로그램 알아보기- [ATL] 나한테 연결했나?- 인터넷에 연결되어 있는지 알아보기- 파일 사이즈 별로 단위를 나누어서 출력하기- 아스키 코드의 재미난 연산- 이런 코드는 피하고 싶다- 윈도우가 리사이즈될때 다시 그려야 하는 영역 얻기- Visual C++ 이 사용하는 확장자 살펴보기
Advanced
- 함수의 호출 규약에 대해서 알아봅시다- WaitCursor가 만들어지지 않는 경우- Capture가 되지 않는 경우- Queue를 함께 씁시다- SendMessage는 어떻게 작동하는가?- 친절한 메세지 ( benign message )- 복잡한 ActiveX Control 라이센스 간단히 얻기- LHCTRACE( light-weight!!!)- LHCTRACE- Advanced Breakpoint- DECLARE_DYNCREATE()와 IMPLEMENT_DYNCREATE()- TLS(Thread Local Storage)- CreateWindow()- Top 윈도우들의 핸들을 알수 없을까?- 호출 관행- C++에서 Internal Linkage를 갖는 몇 가지- 배경이 투명한 Bitmap 그리기- VC++에서 RTTI 사용하기- OLE를 이용한 Drag and Drop- 콜백함수의 구현- 프로세스의 초기화와 종료 기다리기- 향상된 RichEdit control (RICHEDIT20A)- PowerPoint 파일을 Image 파일로 변환하기 - 실행파일 또는 DLL에서 파일버전 정보를 가져오는 방법- CEdit - 리소스에서 파일을 여는 방법- IPicture를 이용한 JPG, GIF, BMP, WMF, EMF, ICO 보기- Child윈도를 Popup시키는 방법- Set Next Statement 를 통해서 디버깅 하기- 스레드에 이름 지어주기- 툴바의 툴팁을 내가 원하는데로- 정렬과 탐색 루틴이 필요하신 분- 데이터 암호화 방법- Dialog Base에 UpdateCommandUI Handler를 달자.- Popup Menu에 UpdateCommandUI handler동작 시키기- 함수대신 function object를 대입하자- koenig lookup- Win32 multithreading Performance- 실행중인 자신의 파일의 fullpath를 정확히 알아내기- ATL에서 error LNK2001: unresolved external symbol _main 해결하기- Winsock 2.0 에 관련된 몇가지 것들- Winsock 2.0의 단점들- none MFC에서 memory leak난 부분 찾기- ATL - warning MIDL2039 의 버그- apartment간의 marshaling- apartment 모델에 관한 이야기- #File Error#- DLL 에 대해서 알아보자.- Simulating Dynamic Binding- HANDLE 의 정체!!- 특정 URL의 파일을 다운로드하기- dll을 모든 프로세스에 로드시키기- 특정 Port 가 사용중인지 알아보는 방법- 스택에 동적으로 메모리 할당하기- ActiveX 컨트롤로부터 URL 알아내기- 프로그램의 수행 속도를 개선하는 방법- 힙: 장점과 단점- socket을 옳바르게 닫기- release 에서 _set_new_handler() 가 동작하지 않는 경우- Windows Structured Exceptions을 C++ Exceptions로 바꾸기- if문을 사용한 경우와 Exception handling을 사용한 경우의 비교- dispinterface의 특성- 치명적인 오류가 발생하였을 때 프로그래머에게 알리기- API hooking ( Dll 바꿔치우기~)- 메모리 패킹- VC++ 에서 OCX 내의 함수 직접 호출하기- ActiveX 컨트롤 사용하지 않고 프로그램 실행하기- ActiveX 컨트롤 설치할때 inf 파일에서 dll 순서 중요- C 에서 최적화된 프로그램 만들기- regsvr32.exe 를 사용하여 ActiveX 컨트롤 등록시 주의점- PHP나 ASP 코드 직접 호출하기