鱼C论坛

 找回密码
 立即注册
查看: 1780|回复: 2

lstrlen和sizeof问题

[复制链接]
发表于 2014-10-14 14:55:03 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 风之残月 于 2014-11-9 22:30 编辑

#include <Windows.h>
#include <iostream>
#include <tchar.h>
#include "resource.h"
INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
            case IDC_BUTTON1:
                {
                    TCHAR szText[260] = {0};
                    GetDlgItemText(hwndDlg,IDC_EDIT1,szText,sizeof(szText));
                   //为什么上行将sizeof或成lstrlen就显示不出来?
                  //lstrlen也能返回全部输入的文字的空间大小,莫非文字是靠右写的,被截断了?

                    _stprintf(szText,TEXT("%s"),szText);
                    MessageBox(hwndDlg,szText,TEXT("提示"),MB_OK);
                }
            }
        }
        break;
    case WM_SYSCOMMAND:
        {
            switch(wParam)
            {
            case SC_CLOSE:
                EndDialog(hwndDlg,1);
                break;
            }
        }
   
    }
    return FALSE;
}
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR     lpCmdLine,
                   int       nCmdShow)
{
    DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
    return 0;
}


最佳答案

查看完整内容

这种参数的意思是要传过去缓冲区的大小,确定大小足够再拷贝内容进缓冲区。 lstrlen返回的是空间已经存储的字符串长度,sizeof是指申请了多大空间,在这里应该用sizeof,如果用lstrlen会返回零,所以不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-14 14:55:04 | 显示全部楼层
这种参数的意思是要传过去缓冲区的大小,确定大小足够再拷贝内容进缓冲区。
lstrlen返回的是空间已经存储的字符串长度,sizeof是指申请了多大空间,在这里应该用sizeof,如果用lstrlen会返回零,所以不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2014-11-1 00:20:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 05:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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