- GetSystemMetrics함수는 16비트 윈도우즈부터 지원되는 함수였다. 그런데 32비트 윈도우즈에서는 설정 사항들이 더 많아지고
복잡해져서 이 함수만으로는 모든 설정 사항을 조사할 수 없게 되었다. 더구나 이 함수는 정수형을 리턴하기 때문에 좀 더
복잡한 형태의 정보는 리턴할 수 없으며 설정 정보를 변경하는 기능도 가지고 있지 않다. 그래서 95부터는 좀 더 많은
설정 정보를 다룰 수 있는 함수가 나오게 됨.
BOOL SystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni);
uiAction : 동작을 지정하는 값 무려 140여개.
두번째, 세번째 인수 : uiAction에 따라 의미가 달라지는데 설정 정보를 돌려받기 위한 용도나 또는 설정정보를 전달하기 위한
용도로 사용된다.
fWinIni : 이 함수가 설정을 변경했을 때 WM_SETTINGCHANGE 메시지를 모든 탑레벨 윈도우에게 보낼 것인가 아닌가 결정.
이 메시지를 보내면 다른 윈도우들이 즉시 변화를 감지할 수 있으며 또현 변경된 설정이 레지스트리에도 저장된다.
다음 세 플래그의 조합을 지정하거나 0을 지정할 수도 있다.
SPIF_UPDATEINIFILE 사용자 프로필에 변경사항을 기록
SPIF_SENDCHANGE= 모든 탑 레벨 윈도우에게 WM_SETTINGCHAGE
SPIF_SENDWININICHANGE 메시지를 보낸다.
=================================================================================================================
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
BOOL bDrag;
static TCHAR Mes[255]="마우스 버튼을 누르면 '마우스로 끄는 동안 창 내용 표시'"
"효과를 토글합니다.'";
switch (iMessage) {
case WM_LBUTTONDOWN:
SystemParametersInfo(SPI_GETDRAGFULLWINDOWS,0,&bDrag,0);
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,!bDrag,NULL,0);
if (!bDrag==TRUE) {
lstrcpy(Mes,"마우스로 끄는 동안 창 내용 표시함");
} else {
lstrcpy(Mes,"마우스로 끄는 동안 창 경계선만 표시함");
}
InvalidateRect(hWnd,NULL,TRUE);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
TextOut(hdc,50,50,Mes,lstrlen(Mes));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
'Development' 카테고리의 다른 글
[Flash] Using “setTimeout()” in a custom class. (0) | 2010.07.17 |
---|---|
[VC++] Window 테두리 그리기 (3) | 2010.07.06 |
[VC++] SystemParametersInfo로 SPI_GETNONCLIENTMETRICS 오류시 방법(VS2008 이상) (1) | 2010.07.06 |
[VC++] SystemParametersInfo() 트레이 주위에 윈도우 생성 하기 (0) | 2010.07.06 |
[VC++] DLL 생성과 익스포트 섹션 (1) | 2010.06.29 |