拈花小仙 发表于 2014-10-14 14:55:03

lstrlen和sizeof问题

本帖最后由 风之残月 于 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 = {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;
}


漩涡鸣人 发表于 2014-10-14 14:55:04

这种参数的意思是要传过去缓冲区的大小,确定大小足够再拷贝内容进缓冲区。
lstrlen返回的是空间已经存储的字符串长度,sizeof是指申请了多大空间,在这里应该用sizeof,如果用lstrlen会返回零,所以不行

大个的糖果 发表于 2014-11-1 00:20:32

页: [1]
查看完整版本: lstrlen和sizeof问题