1. 程式人生 > >今天遇到的combox問題和動態顯示時間問題

今天遇到的combox問題和動態顯示時間問題

1、 VC 實現多視窗用 combox 控制元件的下拉單選擇不同的數值實現不同的視窗數,對 combox 加一個訊息對映函式,選不同的值沒有呼叫訊息對映函式,沒起作用,找問題很長時間沒解決,後來發現建訊息響應函式時選錯觸發事件的方式選成 CBN_EDITCHANGE, 應該選 CBN_SELCHANGE 。對於 CBN_SELCHANGE ,我現在的理解是用滑鼠點選下拉框就會觸發此訊息,而對於 Dropdown ComboBox ,改變框中的文字則不觸發此訊息。

ON_CBN_EDITCHANGE    
 
  text   改變了,顯示出來之後發生,  
  (

如果是 CBS_DROPDOWNLIST   樣式,則不發生   )  
   
  ON_CBN_EDITUPDATE    
 
  text   改變了,顯示出來之前發生,  
  ( 
如果是 CBS_DROPDOWNLIST 樣式,則不發生   )  
   
 
也就是 ON_CBN_EDITCHANGE ON_CBN_EDITUPDATE   之後發生

  ON_CBN_SELCHANGE  
 
在下拉選中的   text   改變了就發生,可以用   GetLBText   來獲取   text, 而不是 GetWindowText。

<!-- /* Font Definitions */ @font-face {font-family:宋體; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋體; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1330668733; mso-list-type:hybrid; mso-list-template-ids:-573114440 1336195068 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-text:%1、; mso-level-tab-stop:18.0pt; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

2、 動態顯示時間

DIALOG 類裡新增WM_TIMER 訊息對映得到對映函式OnTimer (),在OnTimer 裡新增程式碼

CTime nowtime = CTime::GetCurrentTime();

CString m_strNowTime;

// m_strNowTime = _T(" 當前時間")+nowtime.Format(_T("%Y-%m-%d %H:%M:%S"));

m_strNowTime = nowtime.Format(_T("%Y-%m-%d %H:%M:%S"));

CStatic *stic = (CStatic *)GetDlgItem(IDC_STATIC_NOWTIME);

// stic->SetWindowText(m_strNowTime);

//CEdit *stic = (CEdit *)GetDlgItem(IDC_STATIC_NOWTIME);

stic->SetWindowText(m_strNowTime);

UpdateData(FALSE);

CDialog::OnTimer(nIDEvent);

CDialog::OnTimer(nIDEvent);

OnInitDialog ()裡新增

SetTimer(0,1000,NULL);// 一秒鐘

    這樣就可以動態顯示系統時間了。 

其中 IDC_STATIC_NOWTIME 是靜態編輯框的ID 就是要顯示時間的控制元件ID