怎么我在VC6.0上调试的这个程序放到VS2005上调试有9个错呢。还全是一样的错

来源:百度知道 编辑:UC知道 时间:2024/06/06 01:30:29
#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinZieckeyProc(
HWND hwnd ,
UINT uMsg,
WPARAM wParam ,
LPARAM lParam
) ;

int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
LPSTR lpCmdLine ,
int nCmdShow
)
{
WNDCLASS wndcls;

wndcls.cbClsExtra = 0 ;
wndcls.cbWndExtra = 0 ;
wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH ) ;
wndcls.hCursor = LoadCursor( NULL , IDC_ARROW ) ;
wndcls.hIcon = LoadIcon( NULL , IDI_APPLICATION ) ;
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WinZieckeyProc;
wndcls.lpszClassName = "Zieckey_W";
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW | CS_VREDRAW ;

RegisterClass( &wndcls ) ;

HWND hwnd; <

字符串常量是const char[]类型的,而函数用的参数是LPCWSTR类型(即const wchar_t[]类型),所以会报错。
解决方法:
① 所有字符串常量都改成TEXT("Zieckey_W")形式。此处,TEXT()是一个带参宏。
② 将strlen改为lstrlen. 以适应宽字符

2005默认是用UNICODE字符集,所有API的字符串参数又要用宽字符