#include <windows.h>
struct
{
int iStyle;
TCHAR *szText;
}
button[]=
{
BS_PUSHBUTTON, TEXT("PUSHBUTTON"),
BS_DEFPUSHBUTTON, TEXT("DEFPUSHBUTTON"),
BS_CHECKBOX, TEXT("CHECKBOX"),
BS_AUTOCHECKBOX, TEXT("AUTOCHECKBOX"),
BS_RADIOBUTTON, TEXT("RADIOBUTTON"),
BS_3STATE, TEXT("3STATE"),
BS_AUTO3STATE, TEXT("AUTO3STATE"),
BS_GROUPBOX, TEXT("GROUPBOX"),
BS_AUTORADIOBUTTON, TEXT("AUTORADIOBUTTON"),
BS_OWNERDRAW, TEXT("OWNERDRAW")
};
#define NUM (sizeof button/sizeof button[0])
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd )
{
static TCHAR szAppName[]=TEXT("BTnLook");
HWND hwnd;
MSG message;
WNDCLASS zf;
zf.cbClsExtra=0;
zf.cbWndExtra=0;
zf.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
zf.hCursor=LoadCursor(NULL,IDC_ARROW);
zf.hIcon=LoadIcon(NULL,IDI_APPLICATION);
zf.hInstance=hInstance;
zf.lpfnWndProc=WndProc;
zf.lpszClassName=szAppName;
zf.lpszMenuName=NULL;
zf.style=CS_VREDRAW|CS_HREDRAW;
if (!RegisterClass(&zf))
{
MessageBox(NULL,TEXT("我的程式"),szAppName,MB_ICONERROR);
return 0;
}
hwnd=CreateWindow(szAppName,L"BTnLook",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
while (GetMessage(&message,0,0,0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HWND hwndButton[NUM];
static RECT rect;
static TCHAR szTop[] =TEXT("message wParam lParam"),
szUnd[] =TEXT("______ _______ _______ "),
szFormat[] =TEXT("%-16s%04X-%04X %04X-%04X"),
szBuffer[50] =TEXT("50");
static int cxChar,cyChar;
HDC hdc;
PAINTSTRUCT ps;
int i;
switch (message)
{
case WM_CREATE:
cxChar=LOWORD(GetDialogBaseUnits());
cyChar=HIWORD(GetDialogBaseUnits());
for (i=0;i<NUM;i++)
{
hwndButton[i]=CreateWindow(TEXT("button"),button[i].szText,
WS_CHILD|WS_VISIBLE|button[i].iStyle,cxChar,cyChar*(1+2*i),
20*cxChar,7*cyChar/4,hwnd,(HMENU)i,((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,szTop,lstrlen(szTop));
TextOut(hdc,24*cxChar,cyChar,szUnd,lstrlen(szUnd));
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),
szBuffer,
wsprintf(szBuffer,szFormat,
message==WM_DRAWITEM?TEXT("WM_DRAWITEM"):
TEXT("WM_COMMAND"),
HIWORD(wParam),LOWORD(wParam),
HIWORD(lParam),LOWORD(lParam)));
ReleaseDC(hwnd,hdc);
ValidateRect(hwnd,&rect);
break;
case WM_DESTROY:
PostQuitMessage(0);
default:
break;
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
}
uj5u.com熱心網友回復:
是不是疊在一起了?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/67644.html
