#include
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[] = TEXT("BtnLook");
HWND hwnd;
MSG msg;
WNDCLASS wc;
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
if(!RegisterClass(&wc))
{
MessageBox(NULL,TEXT("注册窗口类失败"),szAppName,MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName,TEXT("按钮演示窗口"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL
);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
static HWND ButtonHwnd;
PAINTSTRUCT ps;
static RECT rect;
static int cxChar,cyChar;
switch(message)
{
case WM_CREATE:
cxChar = LOWORD(GetDialogBaseUnits()); //获得窗口并固定控制员的窗口基本单位的实际的像点大小
cyChar = HIWORD(GetDialogBaseUnits());
//创建按钮
ButtonHwnd = CreateWindow(TEXT("button"),TEXT("演示按钮"),
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
cxChar,0,
20*cxChar,7*cyChar/4,
hwnd,(HMENU)0,
((LPCREATESTRUCT)lParam)->hInstance,NULL);
return 0;
case WM_SIZE:
//定义矩形区域的大小
rect.left = 24*cxChar;
rect.top = 2*cyChar;
rect.right = LOWORD(lParam);
rect.bottom = HIWORD(lParam);
return 0;
case WM_PAINT:
InvalidateRect(hwnd,&rect,TRUE);//将矩形区域加入窗口的更新区域
hdc = BeginPaint(hwnd,&ps);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
SetBkMode(hdc,TRANSPARENT); //改变背景的绘图模式
TextOut(hdc,24*cxChar,cyChar,TEXT("message"),lstrlen(TEXT("message")));
TextOut(hdc,24*cxChar,cyChar,TEXT("_______"),lstrlen(TEXT("_______")));
EndPaint(hwnd,&ps);
return 0;
case WM_DRAWITEM:
case WM_COMMAND:
ScrollWindow(hwnd,0,-cyChar,&rect,&rect);//滚动一块工作区
hdc = GetDC(hwnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(hdc,24*cxChar,cyChar*(rect.bottom/cyChar-1),TEXT("按钮被单击"),lstrlen(TEXT("按钮被单击")));
ReleaseDC(hwnd,hdc);
ValidateRect(hwnd,&rect);//从窗口的更新区域移走一块矩形区域
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
阅读(785) | 评论(1) | 转发(0) |