對話框和常用控件



CSpinButtonCtrl使用說明

CSpinButtonCtrl使用起來比較特殊,使用起來,需要注意一些地方.實際的教程也比較少.爲了讓後人少走彎路,這裏寫這篇文章以說明.
1.添加EDIT控件
2.添加Spin控件
如果不是這樣的順序的話,使用ctrl+D改變Tab順序,使spin緊靠edit後面
3.在EDIT控件上面設置group屬性(特別注意)
4.在Spin控件上設置
Auto Buddy 爲 true
Set Buddy Integer 爲 true
Alignment 爲 Right Align
5.添加Edit控件 int 變量 m_nNumK;
這個時候點擊向下應該可以增加數值
6.在OnInitDialog中添加以下語句
((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1))->SetRange(-100, 100);
這個時候向上的箭頭爲增加,向下的箭頭爲減小.

 

轉載:http://blog.programfan.com/article.asp?id=31168

 

 

下列控件使用說明全來自 網上搜索的《第5章對話框和常用控件.ppt》

5.2.4控件的消息
    控件的編程和使用過程中,可以向控件發送消息來完成特定的任務,或者是根據控件產生的消息執行自己的代碼。
    應用程序創建一般控件或公共控件之後,控件的狀態發生改變時,控件就會向其父窗口發送消息,這個消息稱爲“通知消息”。對於每個消息,系統都會用一個MSG結構來記錄,MSG具有下列結構:
    typedef struct tagMSG {         // msg 
            HWND       hwnd;          // 接收到消息的窗口句柄
            UINT       message;    // 消息
            WPARAM wParam;   // 消息的附加信息,它的含義取決於message
            LPARAM     lParam;        // 消息的附加信息,它的含義取決於    message
            DWORD  time;    // 消息傳送時的時間
            POINT      pt;        // 消息傳送時,光標的屏幕座標
    } MSG;
    對於一般控件來說,通知消息通常是一條WM_COMMAND消息,這條消息的wParam參數的低位字中含有控件標識符,wParam參數的高位字則爲通知代碼,lParam參數則是指向控件的句柄。

對於公共控件,通知消息通常是一條WM_NOTIFY消息,wParam參數是發送通知消息的控件的標識符,lParam參數是指向NMHDR結構的指針。對於有些控件的通知消息,lParam參數是指向一個更大的結構,且結構中的第一個成員還必須具有NMHDR結構。
儘管控件的各自通知消息並不相同,但下列的通知消息是所有Windows控件所共有的:
    NM_CLICK             在控件中單擊鼠標左按鈕
    NM_DBLCLK             在控件中雙擊鼠標左按鈕
    NM_RCLICK             在控件中單擊鼠標左按鈕
    NM_RDBLCLK             在控件中雙擊鼠標右按鈕
    NM_RETURN             當控件具有輸入焦點時按下ENTER鍵
    NM_SETFOCUS         控件得到輸入焦點
    NM_KILLFOCUS         控件失去輸入焦點
    NM_OUTOFMEMORY         沒有足夠的內存使控件完成操作

按鈕/單選按鈕的選中操作
最常用的按鈕操作是設置或獲取一個或多個按鈕的選中狀態。CButton類的成員函數SetCheck和GetCheck設置或獲取指定按鈕的選中狀態,原型:
    void SetCheck( int nCheck );
    int GetCheck( ) const;
    nCheck和GetCheck函數返回的值可以是:0表示不選中,1表示選中,2表示不確定(僅用於三態按鈕)。
對於多個單選按鈕的選中狀態的設置或獲取,需要使用CWnd類的成員函數CheckRadioButton和GetCheckedRadioButton,原型:
    void CheckRadioButton( int nIDFirstButton, int nIDLastButton, int nIDCheckButton );
    int GetCheckedRadioButton( int nIDFirstButton, int nIDLastButton );
    nIDFirstButton和nIDLastButton指定這組單選按鈕的第一個和最後一個按鈕ID值,nIDCheckButton指定要設置選中狀態的按鈕ID值,函數GetCheckedRadioButton返回被選中的按鈕ID值。 

編輯框的基本操作
    (1)口令設置
    默認的口令字符是“*”,應用程序可以用成員函數CEdit::SetPasswordChar 來定義自己的口令字符,其函數原型如下:
    void SetPasswordChar( TCHAR ch );
    (2)選擇文本
    用鼠標來選擇文本的操作方法:在要選擇的文本的一端按下鼠標左鍵並拖動鼠標,到另一端釋放鼠標鍵。
    用鍵盤來選擇文本的方法:在按光標方向移動鍵的同時,按住Shift鍵。
    應用程序中可以通過編程選擇文本,需要通過調用成員函數CEdit::SetSel 來實現。與該函數相對應的還有CEdit::GetSel和CEdit::ReplaceSel,分別用來獲取編輯框中前選擇的開始和結束的位置以及替換被選擇的文本。
    (3)設置編輯框的頁面邊距
    設置編輯框的頁面邊距可以使文本在編輯框顯示更具滿意效果,應用程序可通過調用成員函數CEdit::SetMargins來實現,函數原型:
    void SetMargins( UINT nLeft, UINT nRight );
    (4)剪帖板操作
    編輯框自動支持文本的複製、粘貼、剪切的鍵盤操作,對應的快捷健爲Ctrl+C、Ctrl+V和Ctrl+X。若應用程序調用CEdit::Undo函數時,還可撤消當前的操作,再調用一次該函數,則恢復剛纔的操作。  
(5)獲取多行編輯框文本
    一種是使用DDX/DDV,將編輯框控件所關聯的變量類型選定爲CString後,則不管多行編輯框的文本有多少都可用此變量來保存。這種方法不能單獨獲得多行編輯框中的某一行文本。
    另一種方法是使用編輯框CEdit類的相關成員函數來獲取文本。例如,下面的代碼將顯示編輯框中第二行的文本內容:
    char str[100];
    if (m_Edit.GetLineCount()>=2)    // 判斷多行編輯框的文本是否有兩行以上
    {    int nChars;
        nChars = m_Edit.LineLength(m_Edit.LineIndex(1));    // 獲取第二行文本的字符個數
    // 0表示第一行,1表示第二行,依次類推。LineIndex用於將文本行轉換成
    // 能被LineLength識別的索引
        m_Edit.GetLine(1,str,nChars);    // 獲取第二行文本
        str[nChars] = '/0';
        MessageBox(str);
    }

UpData的基本含義:
UpdateData(FALSE);// 將成員變量數據傳給控件,並在控件中顯示
UpdateData();        // 將控件顯示的數據傳給成員變量


CListBox的基本用法:
該學生姓名,成績1,成績2,成績3
int nIndex = m_List.AddString(m_strName);    // 向列表框添加學生姓名
// 將該學生成績與新增的列表項關聯起來   
SCORE data;
data.score1 = m_nScore1;
data.score2 = m_nScore2;
data.score3 = m_nScore3;
m_List.SetItemDataPtr(nIndex, new SCORE(data));

//獲取
SCORE *data=(SCORE *)m_List.GetItemDataPtr(nIndex);
            m_nScore1 = data->score1;
            m_nScore2 = data->score2;
            m_nScore3 = data->score3;

//delete
for (int nIndex = m_List.GetCount()-1; nIndex>=0; nIndex--)
        {// 刪除所有與列表項相關聯的SCORE結構數據,並釋放內存
             delete (SCORE *)m_List.GetItemDataPtr(nIndex);   
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章