最近在利用MFC做端口掃描器實驗,其中涉及CString、char、int等之間的轉換、文本框的多行顯示問題、總是顯示底層最新結果等問題,下面寫一些我總結的相關方法。
一、CString 轉 char *
void CS_to_ch(char mess[], CString str) { //CString to char char *pbuff = (char *)str.GetBuffer(str.GetLength()); char one = pbuff[0]; char two = pbuff[1]; int i = 0; for (; i < str.GetLength(); i++) { mess[i] = pbuff[i * 2]; } mess[i] = '\0'; }
這樣就可將cstring轉為char*
char* 轉cstring 更為簡單
char s[]="hello"; CString str = s;
int 轉 cstring
int i = 12; CString str; str.Format(_("%d"), i);
二、文本框的多行顯示
文本框輸出的方法有很多,這里介紹其中一種方法。
首先為我們的edit control關聯變量,類型選擇value,名稱自取,假設為Cedit,首先接受一行輸出:
Cedit =_T("hello"); UpdateData(FALSE);
_T()代表用unicode字符集編碼,具體不做闡述。
如果多行輸出,首先需要設置edit control的屬性:
Multiline 設為 True;
Horizontal Scroll 和Vertical Scroll及Want return 均設為true;
然后,
Cedit ="hello"; Cedit =Cedit + "\r\n" +"world"; UpdateData(FALSE);
即可多行輸出。
實現底部更新只需一行代碼:(首先為edit control設置關聯變量,類型為控件,名字自取,假設為m_edit)
UpdateData(FALSE);
m_edit.LineScroll(m_edit.GetLineCount() - 1, 0);