2003的工程在2005中竟然编译不过去,怎么解决啊
我这段代码在2003中没有问题,在2005中编译不通过。而且
wc.lpszClassName的类型明明是LPCTSTR,编译竟然提示我:
cannot convert parameter 2 from 'const char [5] ' to 'LPCWSTR ',
难道是MSDN有问题,还是我的编译方式不对,好奇怪,
#include <windows.h>
LRESULT CALLBACK WndProc
( HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASS wc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
wc.hCursor=::LoadCursor(NULL,IDC_ARROW);
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;
wc.lpszClassName= "Draw "
wc.lpszMenuName=NULL;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wc.style=CS_HREDRAW | CS_VREDRAW;
if(!RegisterClass(&wc))
{
::MessageBox(NULL, "窗口注册失败 ", "提示 ",MB_OK);
}
HWND hwnd=::CreateWindow( "Draw ", "画图板 ",WS_OVERLAPPEDWINDOW ,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
::ShowWindow(hwnd,nCmdShow);
::UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam;
}
LRESULT CALLBACK WndProc
( HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
HDC hdc;
HWND hToolBar;
PAINTSTRUCT ps;
switch(uMsg)
{
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
::EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return ::DefWindowProc(hwnd,uMsg,wParam,lParam);
}
}
[解决办法]
Project -> Properties -> Configuration Properties -> General -> Character Set
选择Use Multi-Byte Character Set
[解决办法]
Project -> Properties -> Configuration Properties -> General -> Character Set
选择Use Multi-Byte Character Set
补充:
项目-属性-链接器-系统-子系统-把控制台该为windows
[解决办法]
楼上们正解。
或者将2003工程用右键选择vs 2005 打开,vs2005 会自动进行转换。
------解决方案--------------------
Project -> Properties -> Configuration Properties -> General -> Character Set
选择Use Multi-Byte Character Set