通過實際的界面程序瞭解MFC的SetSel函數和GetSel函數的參數應該怎樣傳遞。
函數參數主要如下:
SetSel(int nStartChar, int nEndChar, BOOL bNoScroll);
GetSel(int& nStartChar, int& nEndChar);
nStartChar表示起始的字符位置
nEndChar表示結束的字符位置
bNoScroll爲TRUE表示在選中的時候不會滾動滾動條,爲FALSE表示會隨光標位置改變而滾動滾動條。
先看SetSel:
(1)、調用SetSel函數並設置nStartChar爲-1,nEndChar爲-1時,-1表示最後一個字符。如圖,光標顯示在最後一個字符後面。
(2)、調用SetSel函數並設置nStartChar爲0,nEndChar爲-1時,表示選中第1個到最後一個字符。如圖,字符串被全選。
(3)、調用SetSel函數並設置nStartChar爲1,nEndChar爲-1時,表示選中第2個到最後一個字符。如圖,從第2個字符串到最後一個字符串被選中。
(4)、調用SetSel函數並設置nStartChar爲2,nEndChar爲-1時,表示選中第3個到最後一個字符。如圖,從第3個字符串到最後一個字符串被選中。
(5)、調用SetSel函數並設置nStartChar爲9,nEndChar爲-1時,表示選中第10個到最後一個字符。如圖,從第10個字符串到最後一個字符串被選中。
(6)、調用SetSel函數並設置nStartChar爲-1,nEndChar爲0時,表示光標跳到最後一個字符。如圖,光標被設置在最後一個字符後面。
(7)、調用SetSel函數並設置nStartChar爲-1,nEndChar爲1時,表示光標跳到最後一個字符。如圖,光標被設置在最後一個字符後面。
(8)、調用SetSel函數並設置nStartChar爲-1,nEndChar爲4時,同樣表示光標跳到最後一個字符。如圖,光標被設置在最後一個字符後面。
(9)、調用SetSel函數並設置nStartChar爲2,nEndChar爲15時,表示選中第3個到第15個字符被選中(第一行有換行符“\r\n”,算2個字符)。如圖所示。
(10)、調用SetSel函數並設置nStartChar爲8,nEndChar爲3時,表示選中第4個到第8個字符被選中。如圖所示。
從以上傳參情況來看,可以知道:
1、如果nStartChar設置爲-1,那麼不管nEndChar設置爲多少,光標都會被移到最後;
2、如果nStart不爲-1,則nStartChar和nEndChar之間的字符都會被選中(不管nStartChar和nEndChar的大小如何)。
再看GetSel:
(1)、將光標點在最開始的位置,調用GetSel則nStartChar和nEndChar均爲0
(10)、選中第一個字符前到第十個字符後之間的字符,調用GetSel,nStartChar爲0,nEndChar爲10
(2)、選中第二個字符前到第九個字符後之間的字符,調用GetSel,nStartChar爲1,nEndChar爲9
(3)、將光標點在第十個字符後面,調用GetSel則nStartChar和nEndChar均爲10
(4)、選中第五個字符前到第二行七個字符後之間的字符,調用GetSel,nStartChar爲4,nEndChar爲19(第一行最後有“\r\n”換行符,2個字符)
從以上傳參情況來看,可以知道:
1、如果光標未選中塊,則nStartChar和nEndChar獲取到的值是相同的;
2、如果選中塊,則nStartChar的值爲選中塊第一個字符所在的位置,nEndChar爲選中塊最後一個字符所在的位置