Edit控件显示内容

 

用Edit控件接收消息并显示LPARAM内容。

 

环境:EVC4.0

 

过程:

 1、创建一个典型的“Hello World”的WCE Application;

       ( File -> new -> Projects -> choose "WCE Application" , enter the project name -> default choose "a typical Hello world project ")

2、添加及修改以下代码

  1. //添加定义
  2. #define ID_EDIT        301
  3. #define ID_COMMTIME    302
  4. //定义编辑框控件为全局变量
  5. HWND g_hWndShow;
  6. void Test()
  7. {
  8.     int total;
  9.     int start;
  10.     int end;
  11.     LPTSTR  szBuff = new TCHAR[64];
  12.     start = GetTickCount();
  13.     for (i = 0; i < 100000; i++)
  14.     {
  15.        
  16.     }
  17.     end = GetTickCount();
  18.     total = end - start;
  19.     wsprintf(szBuff, L"Test Time: %d /r/n", total);
  20.     SendMessage(g_hWndShow, EM_REPLACESEL, 0, (LPARAM)szBuff);    
  21. }
  22. //调用该函数
  23. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  24. {
  25.     HDC hdc;
  26.     int wmId, wmEvent;
  27.     PAINTSTRUCT ps;
  28.     TCHAR szHello[MAX_LOADSTRING];
  29.         HWND hWndCOMM;
  30.         UCHAR temp[64];
  31.     switch (message) 
  32.     {
  33.         case WM_COMMAND:
  34.             wmId    = LOWORD(wParam); 
  35.             wmEvent = HIWORD(wParam); 
  36.             // Parse the menu selections:
  37.             switch (wmId)
  38.             {
  39.             
  40.                 case IDM_HELP_ABOUT:
  41.                    DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
  42.                    break;
  43.                 case IDM_FILE_EXIT:
  44.                    DestroyWindow(hWnd);
  45.                    break;              
  46.                 case ID_COMMTIME:
  47.                     Test();  //调用Test函数
  48.                 break;
  49.                 default:
  50.                    return DefWindowProc(hWnd, message, wParam, lParam);
  51.             }
  52.             break;
  53.         case WM_CREATE:
  54.             hwndCB = CommandBar_Create(hInst, hWnd, 1);         
  55.             CommandBar_InsertMenubar(hwndCB, hInst, IDM_MENU, 0);
  56.             CommandBar_AddAdornments(hwndCB, 0, 0);
  57.             g_hWndShow = CreateWindow(TEXT("edit"),
  58.                 NULL,
  59.                 WS_VISIBLE | WS_CHILD | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE | ES_LEFT | WS_BORDER,
  60.                 50,
  61.                 50,
  62.                 380,
  63.                 200,
  64.                 hWnd,
  65.                 (HMENU)ID_EDIT,
  66.                 hInst,
  67.                 NULL
  68.                 );
  69.                 hWndCOMM = CreateWindow(TEXT("button"),
  70.                 TEXT("COMTime"),
  71.                 WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
  72.                 190,
  73.                 340,
  74.                 100,
  75.                 30,
  76.                 hWnd,
  77.                 (HMENU)ID_COMMTIME,
  78.                 hInst,
  79.                 NULL);
  80.                 break;
  81.         case WM_PAINT:
  82.             RECT rt;
  83.             hdc = BeginPaint(hWnd, &ps);
  84.             GetClientRect(hWnd, &rt);
  85. //          LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
  86. //          DrawText(hdc, szHello, _tcslen(szHello), &rt, 
  87. //              DT_SINGLELINE | DT_VCENTER | DT_CENTER);
  88.             EndPaint(hWnd, &ps);
  89.             break;
  90.         case WM_DESTROY:
  91.             CommandBar_Destroy(hwndCB);
  92.             PostQuitMessage(0);
  93.             break;
  94.                 default:
  95.             return DefWindowProc(hWnd, message, wParam, lParam);
  96.    }
  97.    return 0;
  98. }

 

错误:

SendMessage(g_hWndShow, EM_REPLACESEL, 0, (LPARAM) total);

 

刚开始是这样写的,结果编辑框没有显示内容。原因为:

在一般情况下,lParam是一个指针,它指向的数据类型有三种:长整形、自定义数据结构类型、字符串类型。

需要将total转换为字符串才可以正常显示。使用wsprintf把total的内容赋给了数组szBuff。

改完后可以正常显示了。

 

EM_REPLACESEL   用指定文本替换编辑控件中的当前选定内容

WM_SETTEXT       会把原内容清空

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值