為什么這樣做的計算器記錄框輸出有問題呢?
BOOL CMFCApplication1Dlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加專用代碼和/或呼叫基類
switch (pMsg->wParam)
{
case VK_RETURN: //VK_Return表示的是按鍵為回車鍵。
UpdateData(true); //如果UpdateData(TRUE) == 將控制元件的值賦值給成員變數;
//UpdateData(FALSE) == 將成員變數的值賦值給控制元件。
if (password == _T("123456"))
{
GetDlgItem(IDC_BUTTON1)->EnableWindow(true);//該函式允許/禁止指定的視窗或控制元件接受滑鼠和鍵盤的輸入,
GetDlgItem(IDC_EDITstate)->SetWindowTextW(_T("成功"));
}
else
{
GetDlgItem(IDC_EDITstate)->SetWindowTextW(_T("失敗"));
}
case VK_ESCAPE:
return true;
//break;
default:
break;
}
return CDialogEx::PreTranslateMessage(pMsg);
}
void CMFCApplication1Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控制元件通知處理程式代碼
UpdateData(true);
sum = add1 + add2;
UpdateData(false);
CString str,str1;
//str1 = _T("\n");
str.Format(_T("%g %s %g %s %g"),add1, _T("+"), add2, _T("="), sum);
str += _T("\t\n");
//str = str1 + str;
int lastLine = recond.LineIndex(recond.GetLineCount() +1);//GetLineCount回傳文字單元行數
recond.SetSel(lastLine + 1, lastLine + 2, 0);
recond.ReplaceSel(str); //
}
uj5u.com熱心網友回復:
recond.SetSel(lastLine + 1, lastLine + 2, 0);recond.ReplaceSel(str); //
估計問題就是在這兩句.
除錯看看吧, SetSel 是以字符為單位的吧.
uj5u.com熱心網友回復:
如果是處理在編輯框中輸入的回車訊息, 多載對話框的OnOK處理,uj5u.com熱心網友回復:
int lastLine = recond.LineIndex(recond.GetLineCount() +1);//GetLineCount回傳文字單元行數recond.SetSel(lastLine + 1, lastLine + 2, 0);
行序號獲取估計有問題,recond.GetLineCount()獲取到的index應該就是SetSel里面的序號,為什么還要+1呢?
uj5u.com熱心網友回復:
LineIndex()recond.SetSel(lastLine + 1, lastLine + 2, 0);
recond.ReplaceSel(str); //
這三個函式是啥意思弄了幾天都沒弄明白
uj5u.com熱心網友回復:
int lastLine = recond.LineIndex(recond.GetLineCount() +1);// 最后一個字符recond.SetSel(lastLine + 1, lastLine + 2, 0);// 選擇 最后一個字符
recond.ReplaceSel(str); // 替換 最后一個字符
uj5u.com熱心網友回復:
追加代碼:int nStartChar,nEndChar;
GetEditCtrl().GetSel(nStartChar,nEndChar);// 最后
GetEditCtrl().SetSel(nEndChar,nEndChar);// 選擇 最后
GetEditCtrl().ReplaceSel(prompt);// 替換 最后
uj5u.com熱心網友回復:
SetSel(lastLine + 1, lastLine + 2, 0) 這里為啥要加一 加2啊uj5u.com熱心網友回復:
可能是 bug 試試 6樓代碼轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/92557.html
標籤:界面
