VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 583|回复: 3

求帮我看个mfc中的一个错误

[复制链接]
06_avatar_middle
最佳答案
0 
online_vip 发表于 2018-9-9 16:08:28 | 显示全部楼层 |阅读模式
  1. BOOL CALLBACK InitPlanHwnd(HWND hwnd, LPARAM lParam)       //回调函数
  2. {
  3.         if (planHwnd != NULL) {
  4.                 char buf[4096] = { 0 };
  5.                 ::SendMessage(
  6.                         planHwnd,
  7.                         WM_GETTEXT, //(这里可以改成别的)
  8.                         (WPARAM)4096, //(获取100个字符)
  9.                         (LPARAM)buf
  10.                 );
  11.                 CString cstr;
  12.                 cstr.Format(_T("%s"), buf);
  13.                 MessageBox(mainDlgHwnd, (LPCTSTR)cstr, _T("消息框标题"), MB_OK);
  14.                 return false;
  15.         }
复制代码


在MessageBox(mainDlgHwnd, (LPCTSTR)cstr, _T("消息框标题"), MB_OK);点击dialog确定之后会报错
Run-Time Check Failure #2 - Stack around the variable 'buf' was corrupted.
网上查了是数组越界但是我看了下长度是3000多,我设置了4000应该够不知道什么原因




上一篇:在子线程调用sendmessage
下一篇:内存释放原理
75_avatar_middle
最佳答案
0 
在线会员 发表于 2018-9-9 17:18:12 | 显示全部楼层
(LPARAM)buf 是不是应该 改成 (LPARAM)&buf  ???
06_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2018-9-9 21:00:03 | 显示全部楼层
coldBro 发表于 2018-9-9 17:18
(LPARAM)buf 是不是应该 改成 (LPARAM)&buf  ???

数组的名字不是数组的地址吗?
51_avatar_middle
最佳答案
82 
online_admins 发表于 2018-9-9 23:08:44 | 显示全部楼层
那可不一定,还得看工程编码,如果是 Unicode 的话,就得需要2倍的长度,所以最好还是把:
char buf[4096] = { 0 };
改成:
TCHAR buf[4096] = { 0 };
应该就没问题了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-30 06:50

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表