无锡市城规设计院:一个基本的win32程序编译有问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/13 13:59:48
可以直接复制下面代码,然后调试。
不知道为什么不停的受到WM_PAINT消息。

#include <windows.h>

class MyWindow
{
private:
HINSTANCE hinst;
HWND hwnd;
HDC hdc;
HDC hbkdc;
HBITMAP hbkbm;
int wid,hit;

public:
MyWindow(){}
~MyWindow()
{
DeleteObject(hbkbm);
DeleteDC(hbkdc);
}
bool Create(char* ClassName,char* WindowName, \
HINSTANCE hinstance, WNDPROC msgproc, \
int width,int height)
{
hinst=hinstance;
wid=width;
hit=height;

WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = msgproc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hinst;
wcex.hIcon = 0;//LoadIcon(hInstance, (LPCTSTR)IDI_SEE);
wcex.hCursor = 0;//LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = 0;//(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = 0;//(LPCTSTR)IDC_SEE;
wcex.lpszClassName = ClassName;
wcex.hIconSm = 0;//LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
if(!RegisterClassEx(&wcex)) return false;

hwnd = CreateWindow(ClassName, WindowName, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, wid, hit, 0, 0, hinst, 0);
if (!hwnd) return false;

hdc=GetWindowDC(hwnd);
hbkdc=CreateCompatibleDC(0);
hbkbm=CreateCompatibleBitmap(0,wid,hit);
SelectObject(hbkdc,hbkbm);
}
void Refresh()
{
BitBlt(hdc,0,0,wid,hit,hbkdc,0,0,SRCCOPY);
//UpdateWindow(hwnd);
}
void Show(int nCmdShow)
{
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
}
void Run()
{
MSG mg;
while(GetMessage(&mg,0,0,0))
{
TranslateMessage(&mg);
DispatchMessage(&mg);
}
}
};
MyWindow wd_mjps;

LRESULT WINAPI mp_mjps(HWND hd,UINT mg,WPARAM wp,LPARAM lp)
{
switch(mg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_PAINT:
a++;
//wd_mjps.Refresh();
break;
case WM_MOUSEMOVE:
break;
default:
return DefWindowProc(hd,mg,wp,lp);
}
}

int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
wd_mjps.Create("classname","windowname",hInstance,mp_mjps,500,300);
wd_mjps.Show(nCmdShow);
//HBITMAP h=(HBITMAP)LoadImage(0,"mjp.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
//HDC c=CreateCompatibleDC(0);
//SelectObject(c,h);
//BitBlt(wd_mjps.hbkdc,0,0,300,300,c,0,0,SRCCOPY);
wd_mjps.Run();
return 0;

}