win32 edit控件尾部追加内容

 

有时候我们可能想在win32程序上实时打印我们想要的一些信息,不是以覆盖的形式而是以追加的形式。

    以前我常常采用比较笨的方式,首先调用GetDlgItemText获取原先字符串,保存在一个字符数组里面,然后将字符数组追加一个字符串,再调用SetDlgItemText函数达到自己的目的了,这种方式如果要打印的文字短还比较好处理,但是当文字量达到一定程度时,我们势必就要分配一个特别大的存储区域来存储原先的字符串,而且会反复malloc和free造成内存的碎片,当然这种方式效率也特别低下。

    最近因为要打印比较大的数据量,所以上网查找了下如何在Edit控件上append内容,实现如下:

   


void AppendEdit( HWND hWnd, const char * strOutputString,... )
{
#ifdef SR_DEBUG
    HWND hEdit = GetDlgItem(hWnd, IDC_EDIT_SHOW);
    char strBuffer[4096]={0};
    va_list vlArgs;
    va_start(vlArgs,strOutputString);
    _vsnprintf_s(strBuffer,sizeof(strBuffer)-1,strOutputString,vlArgs);
    va_end(vlArgs);
 
    strcat_s(strBuffer, "\r\n");
 
    /* 以下两条语句为在edit中追加字符串 */
    SendMessageA(hEdit, EM_SETSEL, -2, -1); 
    SendMessageA(hEdit, EM_REPLACESEL, true, (long)strBuffer ); 
 
    /* 设置滚轮到末尾,这样就可以看到最新信息 */
    SendMessageA( hEdit, WM_VSCROLL, SB_BOTTOM,0);
#endif

--------------------- 
作者:Jaylon88 
来源:CSDN 
原文:https://blog.csdn.net/dailongjian2008/article/details/50548303 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/majalis_C/article/details/88821809
今日推荐