Windows/Windows API

화면 가장자리에 밀착

aucd29 2013. 10. 1. 18:49
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    static int sx,sy;
    int t;
    char str[]="화면 가장자리에 밀착합니다.";
    switch(iMessage) {
    case WM_CREATE:
        sx=GetSystemMetrics(SM_CXSCREEN);    // it
        sy=GetSystemMetrics(SM_CYSCREEN);    // it
        return 0;
    case WM_WINDOWPOSCHANGING:
        t=((LPWINDOWPOS)lParam)->x;
        if (t < 30) t=0;
        if (t+((LPWINDOWPOS)lParam)->cx > sx-30)
            t=sx-((LPWINDOWPOS)lParam)->cx;
        ((LPWINDOWPOS)lParam)->x=t;

        t=((LPWINDOWPOS)lParam)->y;
        if (t < 30) t=0;
        if (t+((LPWINDOWPOS)lParam)->cy > sy-30)
            t=sy-((LPWINDOWPOS)lParam)->cy;
        ((LPWINDOWPOS)lParam)->y=t;
        return 0;
    case WM_PAINT:
        hdc=BeginPaint(hWnd, &ps);
        TextOut(hdc,100,100,str,strlen(str));
        EndPaint(hWnd, &ps);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}