static 有什么用啊?
我把窗口创建弄到类里面,代码如下
//////////////////////头文件里窗口创建函类///////////////////////////////
class cjwin
{
private:
HWND hwnd;
#define WS_OVER (WS_BORDER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU)
WNDCLASS wc;
public:
LRESULT CALLBACK lizelglgproc(HWND hwnd,UINT ms,WPARAM wParam,LPARAM lParam);
bool CJwin(HINSTANCE hInstance);
};
////////////////////CPP文件的具体过程///////////////////////
bool cjwin::CJwin(HINSTANCE hInstance)
{
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=CreateSolidBrush(RGB(127,127,127));
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance=hInstance;
wc.lpfnWndProc=lizelglgproc;
wc.lpszClassName= "cn ";
wc.lpszMenuName=NULL;
wc.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wc);
hwnd = CreateWindow( "cn ", "我的第一个自创程序 ",WS_OVER,112,100,800,600,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
return true;
}
LRESULT cjwin::lizelglgproc(HWND hwnd,
UINT ms,
WPARAM wParam,
LPARAM lParam)
{
switch(ms)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,ms,wParam,lParam);
}
return 0;
}
这样不行,而在“LRESULT CALLBACK lizelglgproc(HWND hwnd,UINT ms,WPARAM wParam,LPARAM lParam)”前面加个static 就行了,为什么啊?static 有什么用啊?在这里起了什么作用啊?
[解决办法]
窗口过程不能是 __thiscall 函数类型
类成员函数都是 __thiscall 函数类型
加上 static 就不是 __thiscall 了