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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值