VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 319|回复: 3

[求助] 求帮我看个mfc中的一个错误

[复制链接]
06_avatar_middle
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
在线会员 发表于 2018-9-9 17:18:12 | 显示全部楼层
(LPARAM)buf 是不是应该 改成 (LPARAM)&buf  ???
06_avatar_middle
ico_lz  楼主| 发表于 2018-9-9 21:00:03 | 显示全部楼层
coldBro 发表于 2018-9-9 17:18
(LPARAM)buf 是不是应该 改成 (LPARAM)&buf  ???

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

本版积分规则

关闭

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

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

GMT+8, 2019-3-22 13:34

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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