类型转换错误,请大家帮忙!
有一处错误就是填充窗口信息的时候wndclass.lpfnWndProc = myThread::WndProc;
总是说类型转换错误,请大家帮我看看,谢谢了!
/////////////////////////////////////////////////////////////////
//file:thread.h
//这是定义的一个myThread类
class myThread
{
public:
LRESULT WINAPI WndProc(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);
DWORD WINAPI ThreadProc(LPVOID lParam); //thread process function.
protected:
HWND hwnd;
HANDLE hThread;
WNDCLASS wndclass;
MSG msg;
};
////////////////////////////////////////////////////////////////////////////////
//file:thread.cpp
//
#include <windows.h>
#include "thread.h"
int WINAPI myThread::WinMain(HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow)
{
wndclass.style=CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = myThread::WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hbrBackground=(HBRUSH) GetStockObject(LTGRAY_BRUSH);
wndclass.lpszClassName="SDK Window";
wndclass.lpszMenuName=NULL;
RegisterClass(&wndclass); // Register window class.
hwnd=CreateWindow("SDK Window",
"窗口程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT WINAPI WndProc(HWND hwnd, // Handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam)
{
switch(uMsg)
{
case WM_CHAR:
MessageBox(hwnd,"這是按點擊了鍵盤!","提示",MB_OK);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"點擊了鼠標左鍵!","提示",MB_OK);
break;
case WM_RBUTTONDOWN:
MessageBox(hwnd,"點擊了鼠標右鍵!","提示",MB_OK);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否要關閉該程式?","提示",MB_YESNO))
{
DestroyWindow(hwnd); //Destroy window.
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}