#include
#include
static int x,y;
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="Weixin2003";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);
x=0;
y=0;
HWND hwnd;
hwnd=CreateWindow("Weixin2003","北京维新科学技术培训中心",WS_OVERLAPPEDWINDOW,
0,0,806,630,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
POINT pts[4]=
{
{ 0, 0},
{ 800, 0},
{ 800, 600 },
{ 0, 600 }
};
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);
MessageBox(hwnd,szChar,"weixin",0);
break;
case WM_LBUTTONDOWN:
//PostMessage(hwnd,WM_PAINT,NULL,NULL);
// InvalidateRect;
// UpdateWindow(hwnd);
// RedrawWindow(hwnd,CONST RECT* lprcUpdate,HRGN hrgnUpdate,UINT flags)
// RECT * lprcUpdate;
//RECT rect;
//GetClientRect(hwnd,&rect);
x=x+1;
y=y+1;
//HRGN rgn;
//rgn=CreatePolygonRgn(pts, 4, WINDING);
//SetWindowRgn(hwnd, rgn, FALSE);
//RedrawWindow(hwnd,&rect,rgn,RDW_INTERNALPAINT);
//InvalidateRect;
// UpdateWindow(hwnd);
// GetClientRect(hwnd,&rect);
// InvalidateRect(hwnd,&rect,true);
InvalidateRect(hwnd, NULL, TRUE);
UpdateWindow(hwnd);
//SendMessage(hwnd,WM_PAINT,NULL,NULL);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps; //第一步:建立窗口DC三步骤 HDC,PS,BP
hDC=BeginPaint(hwnd,&ps); //特别注明:没有这个BeginPaint和EndPaint窗口将无法正常退出。
HDC hMemDC; //第二步:建立内存DC
hMemDC=CreateCompatibleDC(hDC); //第三步:让两DC兼容
HBITMAP hBitmap; //第四步:建立BMP 两步骤:定义,加载图
hBitmap=(HBITMAP)LoadImage(NULL,"circle.bmp",IMAGE_BITMAP,
0,0,LR_DEFAULTCOLOR|LR_LOADFROMFILE);
SelectObject(hMemDC,hBitmap); //第五步:内存DC上画图(用BMP画满它)
//将内存DC 中的内容复制到窗口DC 中去
// BitBlt(hDC,0,0,800,600,hMemDC,x-1,y-1,SRCCOPY);
BitBlt(hDC,0,0,800,600,hMemDC,x,y,SRCCOPY); //第六步:选择内存区域粘贴到窗口DC
// SelectObject(hMemDC,hOldBitmap);
DeleteDC(hMemDC) ; //删除内存DC //第七步:释放资源。
EndPaint(hwnd,&ps); //删除窗口DC
break;
case WM_ERASEBKGND:
//什么也不做,返回0使默认窗口回调不再处理这个消息
return 0;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}