我从网上下载了一个VC++的五子棋的程序,但在VS2005中运行时出现了error C2440: “=”: 无法从“CWnd *”转换为“HWND”错误,请高手帮忙

erwei1983 2007-03-25 01:37:28
// FiveDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Five.h"
#include "FiveDlg.h"
#include "ServerDlg.h"
#include "ClientDlg.h"
#include "NameDlg.h"
#include "StatDlg.h"
#include "AboutDlg.h"
#include "Table.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFiveDlg dialog

CFiveDlg::CFiveDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFiveDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CFiveDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CFiveDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFiveDlg)
DDX_Control(pDX, IDC_EDT_CHAT, m_ChatList);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CFiveDlg, CDialog)
//{{AFX_MSG_MAP(CFiveDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(ID_MENU_1P, OnMenu1p)
ON_BN_CLICKED(IDC_BTN_BACK, OnBtnBack)
ON_COMMAND(ID_MENU_PC, OnMenuPc)
ON_COMMAND(ID_MENU_SERVER, OnMenuServer)
ON_COMMAND(ID_MENU_CLIENT, OnMenuClient)
ON_WM_SETCURSOR()
ON_BN_CLICKED(IDC_BTN_HQ, OnBtnHq)
ON_BN_CLICKED(IDC_BTN_LOST, OnBtnLost)
ON_COMMAND(ID_MENU_LEAVE, OnMenuLeave)
ON_COMMAND(ID_MENU_PLAYAGAIN, OnMenuPlayagain)
ON_COMMAND(ID_MENU_NAME, OnMenuName)
ON_COMMAND(ID_MENU_STAT, OnMenuStat)
ON_COMMAND(ID_MENU_EXIT, OnMenuExit)
ON_COMMAND(ID_MENU_ABOUT, OnMenuAbout)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFiveDlg message handlers

BOOL CFiveDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here
m_pDlg = NULL;
CRect rect(0, 0, 200, 200);
m_Table.CreateEx( WS_EX_CLIENTEDGE, _T("ChessTable"), NULL, WS_VISIBLE | WS_BORDER | WS_CHILD,
CRect( 0, 0, 401, 478 ), this, IDC_TABLE );
// 设置双方姓名
SetDlgItemText( IDC_ST_ME, m_Table.m_strMe );
SetDlgItemText( IDC_ST_ENEMY, _T("无玩家加入") );
// 禁用“再玩”和“离开”
CMenu *pMenu = GetMenu();
pMenu->EnableMenuItem( ID_MENU_PLAYAGAIN, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND );
pMenu->EnableMenuItem( ID_MENU_LEAVE, MF_DISABLED | MF_GRAYED | MF_BYCOMMAND );
// 捕获聊天输入框句柄,供处理回车使用
m_hChat = FindWindowEx( GetDlgItem( IDC_CMB_CHAT )->GetSafeHwnd(), NULL, _T("Edit"), NULL );
::SendMessage( m_hChat, EM_LIMITTEXT, (WPARAM)128, 0);
m_Table.Clear( TRUE );
GetDlgItem( IDC_CMB_CHAT )->EnableWindow( FALSE );
GetDlgItem( IDC_BTN_BACK )->EnableWindow( FALSE );
GetDlgItem( IDC_BTN_HQ )->EnableWindow( FALSE );
GetDlgItem( IDC_BTN_LOST )->EnableWindow( FALSE );








以上是错误的代码,我双击错误的时候指针停在 m_hChat = FindWindowEx( GetDlgItem( IDC_CMB_CHAT )->GetSafeHwnd(), NULL, _T("Edit"), NULL );
的前边
...全文
781 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Linarzhang 2012-10-15
  • 打赏
  • 举报
回复
m_hChat = (HWND ) FindWindowEx((GetDlgItem( IDC_CMB_CHAT )-> m_hWnd),NULL, _T( "Edit "), NULL );
这样改就OK了
tc629 2011-05-10
  • 打赏
  • 举报
回复
加个(HWND )强制类型转换
singlepeople121 2011-04-07
  • 打赏
  • 举报
回复
楼主最后是怎么解决的呢?能否告知在下,发我邮箱:826771785@qq.com,多谢!
matrixnull 2007-03-28
  • 打赏
  • 举报
回复
m_hChat 难道是HWND类型的?FindWindEx返回的是CWnd* 类型的
Y___Y 2007-03-25
  • 打赏
  • 举报
回复
没什么问题啊
改成这样看看
m_hChat = FindWindowEx((GetDlgItem( IDC_CMB_CHAT )->m_hWnd),NULL, _T("Edit"), NULL );

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧