#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="MyState";
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
if(!hPrevInstance) {
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
}
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
#include <Commctrl.h>
HWND hState;
// 상태란에 현재 윈도우의 좌표를 출력한다.
void SetStatusText(HWND hWnd)
{
RECT wrt;
char str[128];
GetWindowRect(hWnd, &wrt);
wsprintf(str, "Left : %d", wrt.left);
SendMessage(hState, SB_SETTEXT, 0, (LPARAM)str);
wsprintf(str, "Top : %d", wrt.top);
SendMessage(hState, SB_SETTEXT, 1, (LPARAM)str);
wsprintf(str, "Right : %d", wrt.right);
SendMessage(hState, SB_SETTEXT, 2, (LPARAM)str);
wsprintf(str, "Bottom : %d", wrt.bottom);
SendMessage(hState, SB_SETTEXT, 3, (LPARAM)str);
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
int SBPart[4],i;
switch(iMessage) {
// 상태란을 만든다.
case WM_CREATE:
InitCommonControls();
hState=CreateStatusWindow(WS_CHILD | WS_VISIBLE, "", hWnd,0);
return 0;
case WM_SIZE:
// 메인 윈도우의 크기가 변경되면 상태란의 크기도 같이 변경되어야 한다.
SendMessage(hState, WM_SIZE, wParam, lParam);
// 변경된 폭에 맞게 상태란을 4등분한다.
for (i=0;i<4;i++) {
SBPart[i]=LOWORD(lParam)/4*(i+1);
}
SendMessage(hState, SB_SETPARTS, 4, (LPARAM)SBPart);
// 메인 윈도우의 좌표 출력
SetStatusText(hWnd);
return 0;
// 메인 윈도우의 위치가 변경되면 상태란의 텍스트도 변경한다.
case WM_MOVE:
SetStatusText(hWnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="MyState";
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
if(!hPrevInstance) {
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
}
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
#include <Commctrl.h>
HWND hState;
// 상태란에 현재 윈도우의 좌표를 출력한다.
void SetStatusText(HWND hWnd)
{
RECT wrt;
char str[128];
GetWindowRect(hWnd, &wrt);
wsprintf(str, "Left : %d", wrt.left);
SendMessage(hState, SB_SETTEXT, 0, (LPARAM)str);
wsprintf(str, "Top : %d", wrt.top);
SendMessage(hState, SB_SETTEXT, 1, (LPARAM)str);
wsprintf(str, "Right : %d", wrt.right);
SendMessage(hState, SB_SETTEXT, 2, (LPARAM)str);
wsprintf(str, "Bottom : %d", wrt.bottom);
SendMessage(hState, SB_SETTEXT, 3, (LPARAM)str);
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
int SBPart[4],i;
switch(iMessage) {
// 상태란을 만든다.
case WM_CREATE:
InitCommonControls();
hState=CreateStatusWindow(WS_CHILD | WS_VISIBLE, "", hWnd,0);
return 0;
case WM_SIZE:
// 메인 윈도우의 크기가 변경되면 상태란의 크기도 같이 변경되어야 한다.
SendMessage(hState, WM_SIZE, wParam, lParam);
// 변경된 폭에 맞게 상태란을 4등분한다.
for (i=0;i<4;i++) {
SBPart[i]=LOWORD(lParam)/4*(i+1);
}
SendMessage(hState, SB_SETPARTS, 4, (LPARAM)SBPart);
// 메인 윈도우의 좌표 출력
SetStatusText(hWnd);
return 0;
// 메인 윈도우의 위치가 변경되면 상태란의 텍스트도 변경한다.
case WM_MOVE:
SetStatusText(hWnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
'Windows > Windows API' 카테고리의 다른 글
이미지 리스트 (image list, ImageList_LoadBitmap, ImageList_Create, ImageList_AddMasked, LoadBitmap, ImageList_SetBkColor, ImageList_Draw, ImageList_DrawEx) (0) | 2013.10.01 |
---|---|
프로퍼티 스타일 (property style, PROPSHEETPAGE,PROPSHEETHEADER) (0) | 2013.10.01 |
툴바 버튼 스타일 (Toolbar Control and Button Styles) (0) | 2013.10.01 |
툴바버튼 구조체 (Toolbar Button States) (0) | 2013.10.01 |
툴바 (Toolbar) (0) | 2013.10.01 |