首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

个简单的WINDOWS窗口在Visual Studio 2005下面编译出错解决方案

2012-04-03 
个简单的WINDOWS窗口在VisualStudio2005下面编译出错偶刚学VC++写了个简单的WINDOWS窗口在VisualStudio200

个简单的WINDOWS窗口在Visual Studio 2005下面编译出错
偶刚学VC++    
写了个简单的WINDOWS窗口在Visual     Studio     2005下面编译出错.    
在VC++6.0下面编译成功    
请问怎样修改才能编译通过呢?    
程序如下:    
#include     <windows.h>    
#include     <stdio.h>    
LRESULT     CALLBACK     WinSunProc(                                        
              HWND     hwnd,    
              UINT     uMsg,    
              WPARAM     wParam,    
              LPARAM     lParam    
);    
int     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_CROSS);    
                      wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);    
                      wndcls.hInstance=hInstance;    
                      wndcls.lpfnWndProc=WinSunProc;    
                      wndcls.lpszClassName= "weixin2003 ";    
                      wndcls.lpszMenuName=NULL;    
                      wndcls.style=CS_HREDRAW         &brvbar;     CS_VREDRAW;    
                      RegisterClass(&wndcls);    
 
                      HWND     hwnd;    
                      hwnd=CreateWindow( "weixin2003 ", "刘永 ",WS_OVERLAPPEDWINDOW     ,    
                                              0,0,600,400,NULL,NULL,hInstance,NULL);    


 
                      ShowWindow(hwnd,SW_SHOWNORMAL);    
                      UpdateWindow(hwnd);    
 
                      MSG     msg;    
                      while(GetMessage(&msg,NULL,0,0))    
                      {    
                                              TranslateMessage(&msg);    
                                              DispatchMessage(&msg);    
                      }    
                      return     0;    
}    
LRESULT     CALLBACK     WinSunProc(                                        
              HWND     hwnd,    
              UINT     uMsg,    
              WPARAM     wParam,    
              LPARAM     lParam    
)    
{    
                      switch(uMsg)    
                      {    
                                              case     WM_CHAR:    
                                                                      char     szChar[20];    
                                                                      sprintf(szChar, "char     is     %d ",wParam);    
                                                                      MessageBox(hwnd,szChar, "weixin ",MB_OK);    
                                                                      break;    
                                              case     WM_LBUTTONDOWN:    


                                                                      MessageBox(hwnd, "mouse     clicked ", "weixin ",MB_OK);    
                                                                      HDC     hdc;    
                                                                      hdc=GetDC(hwnd);    
                                                                      TextOut(hdc,0,50, "第一个Windows应用程序 ",strlen( "第一个Windows应用程序 "));    
                                                                      ReleaseDC(hwnd,hdc);    
                                                                      break;    
                                              case     WM_PAINT:    
                                                                      HDC     hDC;    
                                                                      PAINTSTRUCT     ps;    
                                                                      hDC=BeginPaint(hwnd,&ps);    
                                                                      TextOut(hDC,0,0, "哈哈 ",strlen( "哈哈 "));    
                                                                      EndPaint(hwnd,&ps);    
                                                                      break;    


                                              case     WM_CLOSE:    
                                                                      if(IDYES==MessageBox(hwnd, "是否真的结束? ", "关闭 ",MB_YESNO))    
                                                                      {    
                                                                                              DestroyWindow(hwnd);    
                                                                      }    
                                                                      break;    
                                              case     WM_DESTROY:    
                                                                      PostQuitMessage(0);    
                                                                      break;    
                                              default:    
                                                                      return     DefWindowProc(hwnd,uMsg,wParam,lParam);    
                      }    
                      return     0;    
}    
错误信息:    
------     已启动生成:     项目:     WinMain,     配置:     Debug     Win32     ------    
正在编译...    
WinMain.cpp    
d:\c++\c++练习目录\winmain\winmain\winmain.cpp(15)     :     warning     C4007:     “WinMain”:     必须是“__stdcall”    


d:\c++\c++练习目录\winmain\winmain\winmain.cpp(24)     :     error     C2440:     “=”:     无法从“const     char     [11]”转换为“LPCWSTR”    
                              与指向的类型无关;转换要求     reinterpret_cast、C     样式转换或函数样式转换    
d:\c++\c++练习目录\winmain\winmain\winmain.cpp(31)     :     error     C2664:     “CreateWindowExW”:     不能将参数     2     从“const     char     [11]”转换为“LPCWSTR”    
                              与指向的类型无关;转换要求     reinterpret_cast、C     样式转换或函数样式转换    
d:\c++\c++练习目录\winmain\winmain\winmain.cpp(56)     :     error     C2664:     “MessageBoxW”:     不能将参数     2     从“char     [20]”转换为“LPCWSTR”    
                              与指向的类型无关;转换要求     reinterpret_cast、C     样式转换或函数样式转换    
d:\c++\c++练习目录\winmain\winmain\winmain.cpp(59)     :     error     C2664:     “MessageBoxW”:     不能将参数     2     从“const     char     [14]”转换为“LPCWSTR”    
                              与指向的类型无关;转换要求     reinterpret_cast、C     样式转换或函数样式转换    
d:\c++\c++练习目录\winmain\winmain\winmain.cpp(62)     :     error     C2664:     “TextOutW”:     不能将参数     4     从“const     char     [22]”转换为“LPCWSTR”    
                              与指向的类型无关;转换要求     reinterpret_cast、C     样式转换或函数样式转换    
d:\c++\c++练习目录\winmain\winmain\winmain.cpp(69)     :     error     C2664:     “TextOutW”:     不能将参数     4     从“const     char     [5]”转换为“LPCWSTR”    
                              与指向的类型无关;转换要求     reinterpret_cast、C     样式转换或函数样式转换    
d:\c++\c++练习目录\winmain\winmain\winmain.cpp(73)     :     error     C2664:     “MessageBoxW”:     不能将参数     2     从“const     char     [14]”转换为“LPCWSTR”    
                              与指向的类型无关;转换要求     reinterpret_cast、C     样式转换或函数样式转换    
生成日志保存在“file://d:\c++\c++练习目录\WinMain\WinMain\Debug\BuildLog.htm”    
WinMain     -     7     个错误,1     个警告    
==========     生成:     0     已成功,     1     已失败,     0     最新,     0     已跳过     ==========

[解决办法]
项目-〉属性-〉配置属性-〉常规-〉字符集,不要选Unicode
[解决办法]
如果使用 Unicode 字符集,
那么字符串表示方式、操作方法都需要更改 ~

改用 ANSI 编码即可 ~


[解决办法]
反对楼上三位教坏人.
支持用unicode 编程.

[解决办法]
因为默认是UNICODE,最好加上_T
[解决办法]
hwnd=CreateWindow( "weixin2003 ", "刘永 ",WS_OVERLAPPEDWINDOW ,
"weixin2003 ",像这样的字符串都改为TEXT( "weixin2003 ")

热点排行