제임스딘딘의
Tech & Life

개발자의 기록 노트/C++ MFC 8

[MFC] 공부중

- 윈도우 프로그래밍의 기본1. 윈도우 프로그래밍 모델2. CWnd 클래스3. MFC 코드의 기본 구조4. MFC 코드의 흐름5. 키보드 입력6. 마우스 입력7. GDI 기본8. 비트맵과 이미지 처리9. GDI 고급 - 컨트롤 및 기본 프레임워크10. 메뉴/바로 가기 키/도구 모음/상태 표시줄11. 컨트롤 윈도우의 기본12. 버튼 컨트롤13. 목록 상자와 콤보 상자14. 프로그레스 컨트롤/슬라이더 컨트롤/스핀 컨트롤15. 리스트 컨트롤/트리 컨트롤16. 기타 컨트롤(페이저 컨트롤, 에니메이션 컨트롤, 달력컨트롤, IP 주소 컨트롤, 네트워크 주소 컨트롤, 탭 컨트롤)17. 대화상자 - 고급 사용자 인터페이스18. 깜빡임 방지 (Double Buffering)19. 다중 뷰20. MFC의 구조와 이론21...

Function Calling Conventions

함수 호출 규약(Function Calling Convention)에 대하여 정리해 보자. 일단 Microsoft의 Calling Convention의 종류는 다음과 같다 Calling Convention Argument Passing Stack Maintenance Name Decoration (C only) Notes __cdecl Right to left. Calling function pops arguments from the stack. Underscore prefixed to function names. Ex: _Foo. This is the default calling convention for C/C++ __stdcall Right to left. Called function pops it..

구조체 패딩 비트에 대해서. struct padding bit

아래와 같은 구조체를 선언했다고 하자. char가 1바이트이고 int가 4바이트인 시스템에서 위의 구조체를 선언하고 sizeof()로 구조체의 사이즈를 찍어보면 얼마가 나올까? 생각대로라면 5바이트가 나와야 한다. 1 + 4 = 5 이니까.. 그런데 대부분의 컴파일러에서 실제로는 8바이트가 나온다. 이유는 패딩 비트가 추가되어서 그렇다. 몇몇 컴파일러는 구조체의 필드를 메모리에 위치 시킬 때 중간에 빈 공간 없이 쭉 이어서 할당하는 경우도 있지만, 대부분의 컴파일러는 성능향상을 위해 CPU가 접근하기 쉬운 위치에 필드를 배치한다. 그러다 보니 중간에 빈 공간이 들어가게 되는 것이다. 이 빈 공간이 바로 패딩 비트이다. 이에 대해서 좀 더 자세히 알아보자. 32비트 CPU는 메모리에서 값을 읽어 올 때 한..

MFC 재배포 DLL

MFC 재배포 DLL 간단한 MFC용 ODBC을 배포하려고 하는데 필요한 DLL을 확인해보았습니다. 프로젝트 형식은 [Win32]-[Win32 콘솔 응용 프로그램]이고 템플릿 마법사(응용 프로그램 설정)에서 추가 옵션에 '미리 컴파일된 헤더'에 체크 및 공용 헤더 파일 추가 대상에 'MFC' 에 체크하였습니다. 미리 컴파일된 헤더(PCH) 헤더 파일인 stdafx.h에 TODO 부분에 #include // MFC ODBC 를 추가하고 main함수가 있는 cpp 파일에 CDatabase db; BOOL res = db.OpenEx(TEXT("~~~~)); // ~~~~부분에는 ODBC 연결 문자열이 들어갔습니다. if(res) { db.ExecuteSQL(TEXT("Insert into ABBA.dbo.u..

[C/C++]유용한 #pragma directive

출처 : http://eslife.tistory.com/187 ※ 주의 : 아래에서 기술하는 내용은 Visual C++ 컴파일러에서만 확인된 내용입니다. 지난번 #define 팁 에 이어 이번에는 필수는 아니지만 사용할 경우 아주 편리한 #pragma 지시자를 간단하게 소개하려고 합니다. 1. 헤더 파일을 한번만 읽어 들이기 아마도 이 경우가 #pragma를 가장 널리 사용하게 된 이유 중에 하나라고 생각되는데요 저도 언제나 헤더 파일을 새로 코딩 할 때 이 한 줄을 먼저 적게 됩니다. (아주 짧고 멋집니다) #pragma once #pragma once 가 없을 당시에는 아래와 같이 헤더 파일 내용을 #ifndef ~ #endif 문장을 사용해서 복잡하게 써주어야 했습니다. (요 복잡한 게 한 줄로 줄..

1