vc 向edit控件尾部追加内容
发布时间:2017年6月25日 作者:未知 查看次数:414
自:http://blog.csdn.net/dailongjian2008/article/details/50548303 有时候我们可能想在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 }
|
|
|