본문 바로가기

Windows API

Win32 C++에서 Microsoft Excel 파일 다루는 방법 Win32 C++에서 Microsoft Excel 파일 다루는 방법 본 포스팅에서는 C#에서 Microsoft Excel 파일 다루는 방법(http://tapito.tistory.com/582)을 참고하여 Win32 C++ 개발 환경에서 MFC를 사용하지 않고 OLE/Automation으로 Microsoft Excel 파일을 읽고 쓰는 방법에 대해 설명합니다. 프로젝트 생성 및 초기 코드에 대해서는 설명하지 않습니다. 1단계. Microsoft Excel Application 로드하기 및 종료하기 1-1. Microsoft Excel Application 실행하기 Excel.Application형 인스턴스를 생성하는 것으로써 Microsoft Excel Application이 내부적으로 실행됩니다. Ex.. 더보기
Borland C++ Borland C++ Borland C++은 x86 기반의 16비트 프로그램(도스 및 윈도우용)을 개발할 수 있는 도구입니다. Borland C++ 2.0(+ Application Frameworks) 지원 아키텍처: x86 (MS-DOS, Windows 3.x) 설치 이미지 형식: .img (RAR 압축됨) 다운로드: 3.5 플로피 이미지 및 패치 설치 파일의 출처: WinWorld: Borland C++ 2.0 (DOS) - WinWorld https://winworldpc.com/product/borland-c/20 Borland C++ 3.1(+ Application Frameworks) 지원 아키텍처: x86 (MS-DOS, Windows 3.x) 설치 이미지 형식: .img (RAR 압축됨) .. 더보기
Windows API로 콘솔(터미널) 입/출력하기 Windows API로 콘솔(터미널) 입/출력하기 본 포스팅에서는 Windows API로 콘솔(터미널)을 띄운 후 이 콘솔로부터 입력 및 출력을 수행하는 과정에 대해 다룹니다. Windows API 콘솔 입출력은 디버그를 위한 문자열 출력 및 GUI에 영향을 주지 않는 각종 테스트 등에 활용될 수 있습니다. 1 단계. 창 띄우기 콘솔 창을 띄우기에 앞서 우선, Windows API로 다음과 같이 빈 창을 띄우겠습니다. /* winmain.c */ #include TCHAR g_szClassName[] = TEXT("ConsoleWindow"); TCHAR g_szWindowName[] = TEXT("Console Window Example"); HINSTANCE g_hInstance = NULL; LRE.. 더보기
MFC 기본 컨트롤 - CComboBox 사용법 MFC 기본 컨트롤 CComboBox의 사용법 MFC에서 제공하는 기본 컨트롤에는, 1. CButton 계열의 버튼 컨트롤(BS_PUSHBUTTON: 일반적인 버튼, BS_CHECKBOX: 체크 박스, BS_RADIOBUTTON: 라디오 버튼, BS_GROUPBOX: 그룹 박스)과 2. CStatic 계열의 정적 컨트롤(SS_SIMPLE: 일반적인 텍스트 표시, SS_BITMAP: 비트맵을 표시) 3. CEdit계열의 입력 컨트롤(ES_MULTILINE: 여러 줄 편집 가능, ES_PASSWORD: 비밀번호 입력, ES_NUMBER: 숫자만 입력) 4. CListBox 계열의 리스트 박스 컨트롤 5. CTreeCtrl 계열의 트리 뷰 컨트롤 6. CComboBox 계열의 콤보 박스 컨트롤 7. CScro.. 더보기
Windows DDK 문서 IMEIMES.DOC - 11. IME File Format and Data Structures (IME 파일 포맷 및 데이터 구조) #5 (완결) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong CANDIDATEFORM CANDIDATEFORM 구조체는 IMC_GETCANDIDATEPOS and IMC_SETCANDIDATEPOS 메시지에서 사용됩니다. /* CANDIDATEFORM */ typedef tagCANDIDATEFORM { DWORD dwIndex; DWORD dwStyle; POINT ptCurrentPos; REC rcArea; } CANDIDATEFORM; CANDIDATEFORM 구조체의 멤버 dwIndex 후보 목록의 ID를 지정합니다. 0부터 시작하는 후보목록의 인덱스입니다. dwStyle CFS_CANDIDATEPOS 또는 CFS_EXCL.. 더보기
Windows DDK 문서 IMEIMES.DOC - 11. IME File Format and Data Structures (IME 파일 포맷 및 데이터 구조) #4 IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong IME 통신을 위해 사용되는 구조체 다음은 IME 통신을 위해 사용되는 구조체에 대한 설명입니다. CANDIDATELIST CANDIDATELIST 구조체는 변환할 수 있는 후보 문자열에 대한 정보를 포함하고 있습니다. /* CANDIDATELIST */ typedef struct tagCANDIDATELIST { DWORD dwSize; // 이 구조체의 크기 DWORD dwStyle; // 후보 문자열들의 스타일 DWORD dwCount; // 변환 후보 문자열의 수 DWORD dwSelection; // 현재 선택된 후보 문자열의 순번 DWORD dwPageStart.. 더보기
Windows DDK 문서 IMEIMES.DOC - 11. IME File Format and Data Structures (IME 파일 포맷 및 데이터 구조) #3 IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong IME 관리 구조체 아래는 IME를 관리하기 위해 사용되는 구조체들에 대해 설명하고 있습니다. IMEINFO IMEINFO 구조체는 내부적으로 IMM과 IME 인터페이스에 사용됩니다. /* IMEINFO */ typedef struct tagIMEInfo { /* The byte count of private data in an IME context. */ /* IME 컨텍스트에서 사적으로 쓰일 메모리의 바이트 수 */ DWORD dwPrivateDataSize; /* The IME property bits. See description below. */ /* IME 속성.. 더보기
Windows DDK 문서 IMEIMES.DOC - 11. IME File Format and Data Structures (IME 파일 포맷 및 데이터 구조) #2 IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong IME 파일 포맷과 데이터 구조체 (Part 2) IMM 및 IME의 데이터 구조체 아래 구조체들은 IMM 및 IME와의 통신에 사용됩니다. IME는 이들 구조체에 직접 접근할 수 있지만 어플리케이션을 그럴 수 없습니다. INPUTCONTEXT INPUTCONTEXT 구조체는 입력 컨텍스트와 관련된 데이터를 보관하는 내부 데이터 구조체입니다. /* INPUTCONTEXT */ typedef struct tagINPUTCONTEXT { HWND hWnd; BOOL fOpen; POINT ptStatusWndPos; POINT ptSoftKbdPos; DWORD fdwConv.. 더보기
Windows DDK 문서 IMEIMES.DOC - 11. IME File Format and Data Structures (IME 파일 포맷 및 데이터 구조) #1 IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong IME 파일 포맷과 데이터 구조체 (Part 1) 아래는 IME가 사용하는 IME 파일 포맷과 데이터 구조체에 대해 설명합니다. IME 파일 포맷 IME는 아래 필드들을 리소스의 버전 정보에서 정확히 지정할 필요가 있습니다. 이는 고정된 파일 정보 부분과 가변 길이 정보 부분으로 구성되어 있습니다. 리소스의 버전 정보에 관한 상세한 내용은 Microsoft Platform SDK를 참조하십시오. 아래는 IME 파일이 포함해야 하는 상세 정보 설정입니다. dwFileOS &nsbp;dwFileOS는 버전 정보의 최상위 블록에 명시되어야 하며 Windows 95 및 Windo.. 더보기
Windows DDK 문서 IMEIMES.DOC - 10. Windows NT/Windows 2000 Issues(윈도우 NT/윈도우 2000 배포) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong Windows NT/Windows 2000 배포 아래는 주로 Windows NT/Windows 2000과 관련된 특별한 주제를 다룹니다. 그러나 몇 가지는 Windows 98에도 적용가능합니다. IME와 현지어 호환성 Windows 2000은 어떤 현지 언어 버전에서도 완전한 기능의 IME를 지원합니다. 즉 여러분이 개발한 IME는 어떤 언어로 된 Windows 2000에서도 설치되고 사용될 수 있습니다. IME 개발자는 이를 고려하고 각 환경에서 테스트해보아야 할 것입니다. 이 새로운 기능은 IME 개발자가 작성한 IME 도움말이 다양한 언어의 운영체제에서도 잘 보이도록.. 더보기
Windows DDK 문서 IMEIMES.DOC - 9. IME Help File(IME 도움말 파일) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong IME 도움말 파일 IME 도움말 파일은 Windows 98, Windows NT 및 Windows 2000에서 새로 추가된 기능입니다. 시스템 펜 아이콘을 마우스 오른쪽 버튼으로 클릭 시 나타나는 메뉴에는 2개의 항목이 있습니다. 하나는 IME 시스템 설정이며 포커스가 놓인 스레드와 연결된 IME의 설정을 변경합니다. 다른 하나는 온라인 도움말 파일이나 활성화되지는 않습니다. 그러므로 이 메뉴 항목은 항상 회색으로 표시됩니다. 이 항목의 용도는 해당 IME의 온라인 도움말을 표시하기 위한 것이었으나 시스템이 IME에게 IME 도움말 파일의 이름을 설정할 방법을 제공하지 .. 더보기
Windows DDK 문서 IMEIMES.DOC - 8. IME Menu Functions (IME 메뉴 함수) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong IME 메뉴 함수 이 함수 집합의 목적은 시스템 작업 표시줄에서 IME 관련 아이콘의 개수를 줄이기 위함입니다. 이는 Windows 98 및 2000의 새로운 기능입니다. 현재의 hKL이 IME일 때, Windows 시스템 프로그램은 작업표사줄에 2개의 아이콘을 추가합니다. 하나는 System ML 아이콘으로, 시스템 작업 표시줄에서 현재의 키보드 레이아웃을 지시하고, 다른 하나는 시스템 펜 아이콘으로 활성화된 윈도우의 IME 상태를 보여줍니다. 보통 IME는 작업표시줄에 추가적으로 아이콘을 더 만들기도 합니다. 이 아이콘을 클릭 시 나타날 컨텍스트 메뉴는 전적으로 IME.. 더보기
Windows DDK 문서 IMEIMES.DOC - 7. Reconversion(재변환) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong 리컨버전(Reconversion) 리컨버전은 Windows 98 및 Windows 2000을 위한 새로운 IME 기능입니다. 이는 이미 어플리케이션의 문서에 입력된 문자열을 재변환하는 능력을 지원합니다. 특히 어떤 문자열이든 IME는 해당 문자열을 인식할 수 있고 이 문자열에 대한 발음 또는 글쇠 정보로 역변환할 수 있고, 이 발음 또는 글쇠에 대응되는 다른 단어들에 대한 후보 목록을 보여줄 수 있습니다. 새롭고 진보된 지능형 IME는 완전한 문장에 대해서도 인식하고 해석할 수 있습니다. IME가 완전한 문장 또는 문장의 일부분 같이 문자열과 관련하여 더 나은 정보를 제공.. 더보기
Windows DDK 문서 IMEIMES.DOC - 5. ImeSetCompositionString 함수, 6. Soft Keyboard(소프트 키보드) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong ImeSetCompositionString 함수 ImeSetCompositionString 함수는 IME 조합 문자열(Composition String)을 다루는 데 어플리케이션이 사용하는 함수입니다. 서로 다른 플래그를 지정함으로써 어플리케이션은 조합 문자열, 속성, 절(clause) 등을 수정할 수 있습니다. 이 함수의 두 번째 매개변수인 dwIndex는 어떻게 조합 문자열이 IME에서 조정되어야 하는지를 지정합니다. 이 값은 SCS_SETSTR ,SCS_CHANGEATTR, SCS_CHANGECLAUSE, SCS_QUERYRECONVERTSTRING와 같은 값을 포함.. 더보기
Windows DDK 문서 IMEIMES.DOC - 4. Generating Messages(메시지 생성하기) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong 메시지 생성하기 IME는 IME 메시지를 생성해야 합니다. IME가 변환 과정을 시작할 때 IME는 WM_IME_STARTCOMPOSITION 메시지를 생성합니다. 만일 IME가 조합 문자열을 변경할 때는 WM_IME_COMPOSITION 메시지를 생성합니다. IME가 메시지를 생성하는 방법에는 두 가지가 있습니다. 하나는 ImeToAsciiEx가 제공하는 lpdwTransKey 버퍼를 사용하는 방법이 있고 다른 하나는 ImmGenerateMessage 함수를 호출하는 방법입니다. 메시지를 생성하기 위해 lpdwTransBuf를 사용하기 IME가 초기화하는 이벤트는 입력 .. 더보기
Windows DDK 문서 IMEIMES.DOC - 3. IME Input Context(IME 입력 컨텍스트) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong IME 입력 컨텍스트 각 윈도우는 IME 입력 컨텍스트와 연결되어 있습니다. IMM은 IME 상태, 데이터 등을 관리하고 IME 및 어플리케이션과 통신하기 위해 입력 컨텍스트를 사용합니다. 기본 입력 컨텍스트 기본적으로 시스템은 기본 입력 컨텍스트를 각 쓰레드마다 생성합니다. IME를 인식하지 않는 모든 창에 대한 쓰레드는 이 컨텍스트를 공유합니다. 어플리케이션이 생성한 입력 컨텍스트 어플리케이션 윈도우는 중간 조합 문자열(Intermediate Composition String)을 포함하여 IME의 모든 상태를 관리하기 위해 윈도우 핸들을 입력 컨텍스트에 연결할 수 있습.. 더보기
Windows DDK 문서 IMEIMES.DOC - 2. IME User Interface(IME 사용자 인터페이스) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong IME 사용자 인터페이스 IME 사용자 인터페이스는 IME 윈도우, UI 윈도우 및 UI 윈도우에 포함되는 구성요소로 이루어집니다. 특징 IME 클래스는 미리 정의된 전역 클래스로서 파생 가능합니다. IME 클래스의 일반적인 특징은 다른 공용 컨트롤과 같습니다. 윈도우 인스턴스는 CreateWindowEx로 생성 가능합니다. STATIC 컨트롤처럼 IME 클래스로 만들어진 윈도우도 사용자 입력 자체에는 반응하지 않지만 컨트롤이 받을 수 있는 다양한 메시지를 수신하여 IME 사용자 인터페이스가 반응할 수 있게 합니다. 어플리케이션은 이 IME 클래스를 이용해 직접 생성하거나.. 더보기
Windows DDK 문서 IMEIMES.DOC - 1. Overview (개요) IME 개발을 위한 Win32 다국어 IME 개요 버전 1.32 최종 수정일: 1998년 4월 1일, 번역: Luciano Jeong 이 문서는 어떻게 Windows 95, Windows 98, Windows NT 및 2000을 위한 IME를 개발할 지에 대한 기초를 소개합니다. 또한 이 문서는 IME 개발을 위해 Win32 다국어 IME를 위해 쓰일 API 레퍼런스 내용을 보충합니다. Overview(개요) IME User Interface(IME 사용자 인터페이스) IME Input Context(IME 입력 컨텍스트) Generating Messages(메시지 발생) ImeSetCompositionString 함수 Soft Keyboard(소프트 키보드) Reconversion(재전환) IME Me.. 더보기
FindFirstFile, FindNextFile, FindClose 예제 #include #include #include #include #include void main() { TCHAR szTemp[512]; // 임시 버퍼 TCHAR szPathBuffer[MAX_PATH]; // 사용자로부터 입력 TCHAR szPathPattern[MAX_PATH]; // 검색 패턴 DWORD i; // 인덱스 변수 HANDLE hItem; // 검색 핸들 WIN32_FIND_DATA findData; // 파일 정보 setlocale(LC_ALL, ".949"); _tprintf(TEXT("디렉터리 경로를 입력해 주세요. (입력 예: C: 또는 C:\\My Documents)\n\r")); _tprintf(TEXT("입력 >> ")); #if defined(_UNICODE) || d.. 더보기