GetWindowsDirectory

원형

UINT GetWindowsDirectory(LPTSTR lpBuffer, UINT uSize);

MFC 원형

해당하는 함수 없음

인수

▶lpBuffer : 윈도우즈가 설치된 경로를 대입받을 출력용 버퍼.

▶uSize : 버퍼의 크기

리턴

성공하면 버퍼에 복사된 문자 개수가 리턴되며 버퍼의 크기가 작아 실패한 경우 요구되는 버퍼 크기를 리턴한다. 경로를 구하지 못했을 경우 0을 리턴한다.

설명

운영체제가 설치되어 있는 경로를 구한다. lpBuffer는 경로를 대입받을 수 있는 충분한 길이를 제공해야 하는데 일반적으로 MAX_PATH길이면 충분하다. 조사된 경로는 백슬레쉬 문자를 포함하지 않으나 단, 윈도우즈가 루트 디렉토리에 설치된 겨우는 백슬레쉬 문자를 가질 수도 있다.

운영체제가 설치되는 폴더는 일반적으로 95/98 계열은 C:\Windows이며 NT/2000 계열은 C:\Winnt이나 설치시의 상황에 따라 또는 사용자의 특별한 지정이 있을 경우는 다른 폴더가 될 수도 있다. 따라서 반드시 이 함수로 설치된 경로를 조사한 후 사용해야 한다. 이 폴더에는 초기화 파일(INI)과 도움말 파일, 스크린 세이버 등의 주요 파일이 복사되어 있다. 윈도우즈 디렉토리에 설치되어 있는 Some.scr 이라는 스크린 세이버의 완전 경로를 조사하고 싶다면 다음 코드를 작성한다.

TCHAR ScrPath[MAX_PATH];
GetWindowsDirectory(ScrPath,MAX_PATH);
lstrcat(ScrPath,"\\Some.scr");

윈도우즈 디렉토리에 있는 파일이라고 해서 c:\Windows\Some.scr이라고 함부로 가정해서는 안된다.

예제 1

다음 예제는 윈도우즈 디렉토리를 조사해서 보여준다. 실행 결과는 이렇다.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	TCHAR WinDir[MAX_PATH];

	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		GetWindowsDirectory(WinDir,MAX_PATH);
		TextOut(hdc,2,2,WinDir,lstrlen(WinDir));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

 

참고함수

GetSystemDirectory : 시스템 디렉토리를 조사해준다.

플랫폼

95이상

참조

 


written by http://www.winapi.co.kr