CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

类型转换错误,请大家帮忙!

楼主mynamelj(风动,帆动,仁者心动)2004-09-03 13:47:06 在 VC/MFC / 基础类 提问

有一处错误就是填充窗口信息的时候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;  
  } 问题点数:50、回复次数:10Top

1 楼microyzy(人不在牛,分高就行;分不在高,人牛也行)回复于 2004-09-03 13:53:34 得分 20

你自己强行转一下:  
  wndclass.lpfnWndProc   =   (WNDPROC)myThread::WndProc;  
   
  还有声明:  
  static   DWORD   WINAPI   ThreadProc(LPVOID   lParam);             //thread   process   function.  
   
   
  Top

2 楼mynamelj(风动,帆动,仁者心动)回复于 2004-09-03 13:56:47 得分 0

我强行转换过没有用的.Top

3 楼whiteclouds(无聊的coding生活)回复于 2004-09-03 13:57:01 得分 0

你把两个函数的实现代码换一下位置试试.Top

4 楼wangweixing2000(星(inspiration(灵感)))回复于 2004-09-03 14:01:49 得分 0

他们两个的参数是否一致呢?Top

5 楼mynamelj(风动,帆动,仁者心动)回复于 2004-09-03 14:21:31 得分 0

你们俩位说的我都试过,还是那处错误!Top

6 楼sssoft(恒谦)回复于 2004-09-03 15:50:48 得分 20

这个函数在类里面定义成静态的  
  static   LRESULT   WINAPI   WndProc(HWND   hwnd......Top

7 楼sssoft(恒谦)回复于 2004-09-03 15:51:33 得分 0

窗口函数只能是静态的或者是全局的Top

8 楼mynamelj(风动,帆动,仁者心动)回复于 2004-09-03 17:25:07 得分 0

刚才那个问题解决了可是现在又出现:  
  LIBCD.lib(wincrt0.obj)   :   error   LNK2001:   unresolved   external   symbol   _WinMain@16  
  Debug/Thread.exe   :   fatal   error   LNK1120:   1   unresolved   externals  
  Error   executing   link.exe.  
  Creating   browse   info   file...Top

9 楼modena(非云)回复于 2004-09-03 17:30:24 得分 0

http://community.csdn.net/Expert/topic/3310/3310705.xml?temp=.8573725Top

10 楼sssoft(恒谦)回复于 2004-09-03 17:48:20 得分 10

//你的程序里面没有WinMain函数,这是Win32必需的一个函数,是一个入口函数  
  //如果没有这个函数,你编译的击不是可执行文件也不是动态库  
  #include   "stdafx.h"  
  int   APIENTRY   WinMain(HINSTANCE   hInstance,  
                                            HINSTANCE   hPrevInstance,  
                                            LPSTR           lpCmdLine,  
                                            int               nCmdShow)  
  {  
    //   TODO:   Place   code   here.  
   
  return   0;  
  }  
   
   
  class   myThread  
  {  
  public:  
  static   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);  
   
  static   DWORD   WINAPI   ThreadProc(LPVOID   lParam);             //thread   process   function.  
   
  protected:  
  HWND   hwnd;  
                    HANDLE   hThread;  
  WNDCLASS   wndclass;  
  MSG   msg;  
  };  
   
  int   WINAPI   myThread::WinMain(HINSTANCE   hInstance,     HINSTANCE   hPrevInstance,     LPSTR   lpCmdLine,     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   myThread::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;  
  }  
  Top

相关问题

  • 类型转换错误?
  • 类型转换错误
  • 请看强制类型转换的代码,为什么错误?
  • 类型转换错误问题
  • 类型转换,请指点
  • 该句adocommand.commandtext中类型转换的错误
  • 一个小问题,类型转换错误
  • 类型转换!
  • 类型转换???
  • 类型转换????

关键词

  • null
  • wndclass
  • hinstance
  • mythread
  • 错误
  • usedefault
  • winapi
  • hwnd
  • cw
  • wndproc

得分解答快速导航

  • 帖主:mynamelj
  • microyzy
  • sssoft
  • sssoft

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo