본문 바로가기

예전/API

(7)
[API] _splitpath (디렉토리 분리 함수) _splitpath 함수는 한 개의 경로를 받아들여 경로를 요소 별로 분리해 4개의 문자열 버퍼에 저장한다. 이 함수를 호출하려면 분리된 요소를 저장할 4개의 버퍼를 미리 준비해야 하는데, 관심없는 요소에 대해서는 NULL 값을 전달해도 된다. 아래 코드를 보자. #include int main(void) { char szPath[_MAX_FNAME];// 전체 경로 char szDrive[_MAX_FNAME];// 드라이브 char szDir[_MAX_FNAME];// 디렉토리 char szFileName[_MAX_FNAME];// 파일명 char szExt[_MAX_FNAME];// 확장자 strcpy(szPath,"c:\\My Document\\Test\\Report 2.5.bak"); _split..
[API] IME에서 좌상단에 네모칸 없애기 응용 프로그램 특정 창에 대 한 IME 해제 하려면 아래와 같이 ImmAssociateContext() API 호출할 수 있습니다. HIMC hIMC; hIMC = ImmAssociateContext(hWnd, NULL); // It makes IME disable for // hWnd window. // Then you can do whatever you want without IME. ImmAssociateContext(hWnd, hIMC); // If you want to enable // IME again, then you can // use the previous stored IME // context(hIMC) // to restore IME. http://support.microsoft.co..
[API] 프로세스 프로세스란 실행중인 프로그램이다.프로그램이라고 말할 수도 있지만, 사실 프로세스는 실행중인 프로그램의 한 인스턴스이다. NotePad.exe 라는 실행 파일이 실행되어 메모리에 적재되면 메모장 프로세스가 된다. 만약 사용자가 2개의 메모장을 실행시켰다면 이 둘은 같은 프로그램이지만, 다른 프로세스로 인식된다. 이것이 프로그램과 프로세스의 차이이다. 운영체제는 실행된 프로그램을 프로세스 단위로 관리한다. 프로세스는 실행중인 프로그램이지만 실제로 작업을 하는 주체는 아니다. 작업은 프로세스 내의 스레드가 담당한다.프로세스는 단지 메모리 상에만 존재하고, 실행과 동시에 스레드를 하나 만들고 스레드를 호출하므로써 모든 작업을 맡긴다. 정리하면, 프로세스는 스레드를 담는 껍데기이며, 실제 일을 하는 것은 스레드 ..
[API] LRESULT 와 HRESULT LRESULT 와 HRESULT HRESULT HRESULT는 반환형중 하나로 본 목적은 외부와 내부 코드의 충돌예방을 위해 코드의 에러를 배치하는 것이였다.HRESULT내에는 에러코드의 본형과 출처에 대한 다양한 비트정보를 가지고 있다. 이는 보통 COM프로그래밍에 들어간다. COM 프로그래밍인터페이스에 소속된 대부분의 함수는 HRESULT 의 반환값을 가진다. 일반 반환형과 똑같이 사용하며 리턴 형은 SUCCEEDED/FAILED 이다. 하지만 굳이 값을 받지는 않아도 된다. if(FAILED(CreateWindow(...)) // 사용 예 1 MessageBox(L"윈도우 생성에 실패 했습니다."); CreateWindow(...) // 사용 예 2 사용 예 1과 2의 결과물 차이는 없다. 특별히 ..
[API] Message Deadlocks ( 메시지 데드락 ) 메시지 데드락 메시지 데드락은 메시지의 교착상태이다. 데드락이란 프로세스들의 집합이 더 이상 진행을 못하고 블록이 되어있는 상태로 시스템자원에 대한 경쟁도중에 발생할 수도 있고, 프로세스간 통신중에 발생한다.서로 충돌이 되는 자원을 요구하기 때문에 데드락이 발생한다. SendMessage함수는 메시지를 받은 윈도우 프로시저를 리턴하기 전에는 리턴하지않는다. SendMessage 호출은 곧 서브루틴 호출과 대등하며 실제로 WndProc의 case 하나를 호출하는 것과 같다. 만약 SendMessage를 받은 대상이 어떠한 이유로 10초 후에 반환을 하게 되었다면 메시지를 보낸 대상은 10초간 데드락 상태에 빠지게 되어 어떠한 것도 할 수 없는 상태가 되어버린다. 해결 방법 메시지가 다른 스레드로 부터 전달..
[API] 모달 과 모달리스의 차이 (modal modeless) 모달 , 모달리스 윈도우의 Form (형식)이나 Dialog (대화상자)를 모달 혹은 모달리스로 표시할 수 있다. 그렇다면 모달이 무엇일까? 모달 간단히 말해 새 모달 창이 열렸을 땐 기존에 있던 창을 사용하지 못하는 방식이다. 예를 들어 어떠한 응용프로그램에서 에러 메시지가 뜬다고 가정하자. 그 메시지를 확인 또는 취소를 눌러야만 다음으로 진행이 가능하고, 그 메시지가 뜬 상태라면 뒤에 있는 창을 선택할 수 없다. 어렵게 말하면 어느 다이얼로그 창이 프로그램의 제어권을 독점해서 이 창이 종료되기전엔 다른 작업을 할 수 없는 것으로 다른 작업을 할 수 없다는 말은 현재 발생한 모달 다이얼로그의 부모 창을 의미 하며 다른 윈도우 창은 별개로 작업이 가능하다. 중요한 메시지를 표시하는 다이얼로그는 거의 모달..
[API] Virtual Key Value WinUser.h에 다음을 추가하면 VK_UP과 같이 쓸 수 있다. #define VK_A 0x41#define VK_B 0x42#define VK_C 0x43#define VK_D 0x44#define VK_E 0x45#define VK_F 0x46#define VK_G 0x47#define VK_H 0x48#define VK_I 0x49#define VK_J 0x4A#define VK_K 0x4B#define VK_L 0x4C#define VK_M 0x4D#define VK_N 0x4E#define VK_O 0x4F#define VK_P 0x50#define VK_Q 0x51#define VK_R 0x52#define VK_S 0x53#define VK_T 0x54#define VK_U 0x55#de..