#define _WIN32_WINNT 0x0400
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
HWND hWndMain;
LPCTSTR lpszClass=TEXT("TrackMouse");
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
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);
hWndMain=hWnd;
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
TRACKMOUSEEVENT tme; // 마우스 위치를 알기 위한 구조체
static char Mes[256];
static BOOL bIn=FALSE;
switch(iMessage) {
case WM_MOUSEMOVE:
if (bIn == FALSE) {
tme.cbSize=sizeof(TRACKMOUSEEVENT);
tme.dwFlags=TME_HOVER; // 마우스가 작업 영역에 들어 왔는지 확인
tme.hwndTrack=hWnd; // 메세지를 받을 윈도우
tme.dwHoverTime=10; // 0.01초기간동안 존재시 이벤트 발생
TrackMouseEvent(&tme);
}
return 0;
case WM_MOUSEHOVER:
lstrcpy(Mes,"마우스가 윈도우 영역에 들어왔습니다");
InvalidateRect(hWnd,NULL,TRUE);
bIn=TRUE;
tme.cbSize=sizeof(TRACKMOUSEEVENT);
tme.dwFlags=TME_LEAVE;
tme.hwndTrack=hWnd;
tme.dwHoverTime=500;
TrackMouseEvent(&tme);
return 0;
case WM_MOUSELEAVE:
lstrcpy(Mes,"윈도우 영역을 벗어났습니다");
InvalidateRect(hWnd,NULL,TRUE);
bIn=FALSE;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
TextOut(hdc,10,10,Mes,strlen(Mes));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
HWND hWndMain;
LPCTSTR lpszClass=TEXT("TrackMouse");
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
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);
hWndMain=hWnd;
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
TRACKMOUSEEVENT tme; // 마우스 위치를 알기 위한 구조체
static char Mes[256];
static BOOL bIn=FALSE;
switch(iMessage) {
case WM_MOUSEMOVE:
if (bIn == FALSE) {
tme.cbSize=sizeof(TRACKMOUSEEVENT);
tme.dwFlags=TME_HOVER; // 마우스가 작업 영역에 들어 왔는지 확인
tme.hwndTrack=hWnd; // 메세지를 받을 윈도우
tme.dwHoverTime=10; // 0.01초기간동안 존재시 이벤트 발생
TrackMouseEvent(&tme);
}
return 0;
case WM_MOUSEHOVER:
lstrcpy(Mes,"마우스가 윈도우 영역에 들어왔습니다");
InvalidateRect(hWnd,NULL,TRUE);
bIn=TRUE;
tme.cbSize=sizeof(TRACKMOUSEEVENT);
tme.dwFlags=TME_LEAVE;
tme.hwndTrack=hWnd;
tme.dwHoverTime=500;
TrackMouseEvent(&tme);
return 0;
case WM_MOUSELEAVE:
lstrcpy(Mes,"윈도우 영역을 벗어났습니다");
InvalidateRect(hWnd,NULL,TRUE);
bIn=FALSE;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
TextOut(hdc,10,10,Mes,strlen(Mes));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
'Windows > Windows API' 카테고리의 다른 글
트랙바 (trackbar) (0) | 2013.10.01 |
---|---|
프로그래스 (PROGRESS, InitCommonControls, commctrl.h, comctl32.lib) (0) | 2013.10.01 |
스크롤바 란에 정보 넣기(scrollbar, MoveWindow, PrintPosition) (0) | 2013.10.01 |
특정영역만 스크롤하기 (ScrollWindow, GetClientRect, scrollbar, SetScrollRange, SetScrollPos) (0) | 2013.10.01 |
32비트 스크롤바 (GetScrollInfo, SCROLLINFO) (0) | 2013.10.01 |