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
}

發佈了34 篇原創文章 · 獲贊 25 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章