菜鸟问题,GetDlgItem()->EnableWindow()编译时出错,大家帮帮忙,谢谢!

sct02 2003-12-26 01:13:01


基于对话框的工程名为Server,为什么在ServerDlg.cpp中
语句GetDlgItem(IDC_Receive)->EnableWindow(1);能通过编译,

但在同一工程的MySocket.cpp中,
语句GetDlgItem(IDC_Receive)->EnableWindow(1);编译时出错:

'GetDlgItem' : function does not take 1 parameters

left of '->EnableWindow' must point to class/struct/union

其中IDC_Receive是对话框中一按钮的ID,

这种错误一般是什么原因引起的?怎么改?我在MySocket.cpp中加了
#include <afxwin.h>
#include <afxdlgs.h>
也不管用,大家帮帮忙?
...全文
214 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackwuwei 2003-12-26
  • 打赏
  • 举报
回复
干嘛要在CSocket类里调用啊,直接所有的参数传递在view或document里就行了,在哪里显示就在哪里管理,我以前总是这样做的。
handsomerun 2003-12-26
  • 打赏
  • 举报
回复
是不是先要用afxgetapp()获得app的指针

  在通过这个app获得对话框的hwnd
sct02 2003-12-26
  • 打赏
  • 举报
回复
搞不懂,类的继承关系:class CMySocket : public CAsyncSocket,
那我在MySocket.cpp中 ,如何能得到对话框的句柄啊?
afantict 2003-12-26
  • 打赏
  • 举报
回复
关键问题就是在MySocket.cpp中取得对话框的hwnd
偶不会
好像来看这个贴子的人都不怎么会
呵呵
你可以避免这样做
当你需要在MySocket.cpp某函数里面操作dlg上的控件的时候
让该函数返回一个值
在dlg里根据返回值
操作dlg上的控件
arvid_gs 2003-12-26
  • 打赏
  • 举报
回复
MySocket.cpp

CServerDlg dlg;
dlg.GetDlgItem(IDC_Receive)->EnableWindow(1);
checkyvc6 2003-12-26
  • 打赏
  • 举报
回复
只有在对话框类的成员函数里面不能那样调用
GetDlgItem(IDC_Receive)->EnableWindow(1);
我看你的错误原因肯定时没有在对话框类的成员函数里面调用.

解决方法:
在你的cpp文件中看看用什么方法得到对话框的句柄
得到句柄之后就可以GetDlgItem(hDlg,IDC_EDIT1)不过要保存你在调用时对话框还存在就是说没有destroy的意思
sct02 2003-12-26
  • 打赏
  • 举报
回复
但是:
用 zhucde(【风间苍月】) 的方法,
GetDlgItem(this->m_hwnd,IDC_Receive)->EnableWindow(1);
编译时出错:
'm_hwnd' : is not a member of 'CMySocket',see declaration of 'CMySocket'
left of '->EnableWindow' must point to class/struct/union

是不是还少了什么东西呀?

afantict 2003-12-26
  • 打赏
  • 举报
回复
对不起
那样的方法不对
应该用第一种办法
首先取得对话框的hwnd
sct02 2003-12-26
  • 打赏
  • 举报
回复
用afantict(巴依老爷)的方法,能通过编译,但程序一运行到那里就死了,

用 zhucde(【风间苍月】) 的方法,
'm_hwnd' : is not a member of 'CMySocket',see declaration of 'CMySocket'
left of '->EnableWindow' must point to class/struct/union

是不是还少了什么东西呀?


zhucde 2003-12-26
  • 打赏
  • 举报
回复
GetDlgItem(this->m_hwnd,IDC_Receive)->EnableWindow(1);
Bandry 2003-12-26
  • 打赏
  • 举报
回复
CMySocket并不是一个窗体类,当然不能用
afantict 2003-12-26
  • 打赏
  • 举报
回复

在MySocket.cpp中,
CServerDlg dlg;
dlg.GetDlgItem(IDC_Receive)->EnableWindow(1);
afantict 2003-12-26
  • 打赏
  • 举报
回复
但在同一工程的MySocket.cpp中,
语句GetDlgItem(IDC_Receive)->EnableWindow(1);编译时出错:

这儿调用你应该加上你的对话框窗体的HWND
sct02 2003-12-26
  • 打赏
  • 举报
回复
Help!

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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