GetDlgItem 在vs2003中,怎么不接受一个参数?

now123 2006-12-12 06:00:03
语句:
GetDlgItem(IDC_EDIT2)->SetWindowTextA("aaa");
错误
error C2660: “GetDlgItem” : 函数不接受 1 个参数


如果加上另一个HWND hDlg参数:
GetDlgItem(hDlg,IDC_EDIT2)->SetWindowTextA("aaa");
错误:
error C2039: “SetWindowTextA” : 不是“HWND__”的成员

...全文
629 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
now123 2006-12-13
  • 打赏
  • 举报
回复
再次感谢
now123 2006-12-13
  • 打赏
  • 举报
回复
问题解决,谢谢
now123 2006-12-13
  • 打赏
  • 举报
回复
谢谢,我试一下
王国凡 2006-12-13
  • 打赏
  • 举报
回复
>.. 句柄后,怎么读取里面的文本?
--------------------
TCHAR str[33];
GetWindowText(hwnd, str, 32); // 文本在 str 中
now123 2006-12-13
  • 打赏
  • 举报
回复
ding
now123 2006-12-13
  • 打赏
  • 举报
回复
我用的api
wltg2001 2006-12-13
  • 打赏
  • 举报
回复
你用的是MFC还是API要先弄清楚,这是两个不同这函数
now123 2006-12-13
  • 打赏
  • 举报
回复
我已经知道这api函数名恰好跟CWnd的成员函数恰好相同了。
在得到某个控件比如 文本框的 句柄后,怎么读取里面的文本?使用什么api函数?
王国凡 2006-12-12
  • 打赏
  • 举报
回复
用 Win32 API 的话, 那是不对啊, 不管是 VC6/2003/2005 都一样.
HWND GetDlgItem(
HWND hDlg,
int nIDDlgItem
);

BOOL SetWindowText(
HWND hWnd,
LPCTSTR lpString
);
youngwolf 2006-12-12
  • 打赏
  • 举报
回复
::SetWindowText(::GetDlgItem(hDlg, IDC_EDIT2) , "aaa");
Mickey89 2006-12-12
  • 打赏
  • 举报
回复
SetDlgItemText(hDlg, IDC_EDIT2, "aa");
看看这样行么?
now123 2006-12-12
  • 打赏
  • 举报
回复
在线等啊
now123 2006-12-12
  • 打赏
  • 举报
回复
帮帮忙啊
now123 2006-12-12
  • 打赏
  • 举报
回复
没有啊,只用了api
王国凡 2006-12-12
  • 打赏
  • 举报
回复
楼主没用 MFC ?
在ClassWizard响应ID为~Dlg的WM_TIMER消息。 使用SetTimer(nIDEvent,time,NULL)来建立一个定时器,关闭定时器用KillTimer(nIDEvent)函数。 然后可以响应ON_WM_TIMER消息来响应一个定时器完成一次记时后的程序。 响应方式如下: void CTimeDlg::OnTimer(UINT nIDEvent) { if(nIDEvent==1000)//间隔为5秒 { //处理事件 } elseif(nIDEvent==1001)//间隔为10秒 { //处理事件 } CDialog::OnTimer(nIDEvent); } 以下是给出一个串口通信定时检查接收数据的部分代码 void CMyDlg::OnOpenCom() { // TODO: Add your control notification handler code here if( f_open_com==true ) { f_open_com = false; GetDlgItem(IDC_OPEN_COM)->SetWindowText("打开通信端口"); CloseHandle(hComm); KillTimer(1000); /// 关闭定时器 return ; } SetTimer(1000, 1000, NULL); ///nIDEvent==1000,time=5000ms const char *ComNo; DCB dcb; string temp("COM1"); ComNo = temp.c_str(); hComm = CreateFile( ComNo , GENERIC_READ|GENERIC_WRITE , 0 , NULL , OPEN_EXISTING , 0 , 0); if( hComm==INVALID_HANDLE_VALUE ) /// 如果端口未打开 { MessageBox("打开通信端口出错!" , "Comm Error" , MB_OK); return ; } /// 将dcb地址传入,以取得通信参数 GetCommState(hComm,&dcb); /// 得知目前通信状态 dcb.BaudRate = CBR_9600; dcb.ByteSize = 8; /// 字节为8 dcb.Parity = NOPARITY; /// Parity为None dcb.StopBits = ONESTOPBIT; /// 1个停止位 if( !SetCommState( hComm , &dcb)){ MessageBox("通信端口设置出错!" , "Set Error" , MB_OK ); CloseHandle(hComm); return; } GetDlgItem(IDC_OPEN_COM)->SetWindowText("关闭通信端口"); f_open_com = true; } void CMyDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default char inbuff[1024]; DWORD nBytesRead , dwError; COMSTAT cs; /// 取得状态 ClearCommError( hComm , &dwError , &cs); /// 数据是否大于所准备的缓冲区 if( cs.cbInQue > sizeof(inbuff) ) { PurgeComm(hComm , PURGE_RXCLEAR ); /// 清除通信端口数据 return ; } ReadFile(hComm , inbuff , cs.cbInQue , &nBytesRead , NULL ); //接收通信端口的数据 inbuff[cs.cbInQue] = '\0'; MessageBox("打开通信端口出错!" , "Comm Error" , MB_OK); m_Receive.Format("%s",inbuff); UpdateData(false); CDialog::OnTimer(nIDEvent); } 李杨: for(int i=0; ;i++ ) { ... Sleep(5); if(i>...) {AfxMessageBox("错误XXX"); return;} }//跳出后记得停止一些机器动作

16,473

社区成员

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

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

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