ComBoxDlg.cpp 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. // ComBoxDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "Control.h"
  5. #include "ComBoxDlg.h"
  6. struct tagStudent
  7. {
  8. TCHAR szName[33]; //姓名
  9. int nScore; //成绩
  10. int nID; //学号
  11. };
  12. // CComBoxDlg 对话框
  13. IMPLEMENT_DYNAMIC(CComBoxDlg, CDlgControlItem)
  14. CComBoxDlg::CComBoxDlg(CWnd* pParent /*=NULL*/)
  15. : CDlgControlItem(CComBoxDlg::IDD, pParent)
  16. {
  17. }
  18. CComBoxDlg::~CComBoxDlg()
  19. {
  20. }
  21. void CComBoxDlg::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CDlgControlItem::DoDataExchange(pDX);
  24. DDX_Control(pDX,IDC_COMBO1,m_ComboBox1);
  25. DDX_Control(pDX,IDC_COMBO2,m_ComboBox2);
  26. DDX_Control(pDX,IDC_COMBO3,m_ComboBox3);
  27. DDX_Control(pDX,IDC_COMBO4,m_ComboBox4);
  28. DDX_Control(pDX,IDC_COMBO5,m_SkinComboBox);
  29. DDX_Control(pDX,IDC_COMBO6,m_SkinComboBox2);
  30. }
  31. BEGIN_MESSAGE_MAP(CComBoxDlg, CDlgControlItem)
  32. ON_BN_CLICKED(IDC_BUTTON1, &CComBoxDlg::OnBnClickedButton1)
  33. ON_BN_CLICKED(IDC_BUTTON2, &CComBoxDlg::OnBnClickedButton2)
  34. ON_BN_CLICKED(IDC_BUTTON3, &CComBoxDlg::OnBnClickedButton3)
  35. ON_BN_CLICKED(IDC_BUTTON14, &CComBoxDlg::OnBnClickedButton14)
  36. ON_BN_CLICKED(IDC_BUTTON16, &CComBoxDlg::OnBnClickedButton16)
  37. ON_BN_CLICKED(IDC_BUTTON15, &CComBoxDlg::OnBnClickedButton15)
  38. ON_BN_CLICKED(IDC_BUTTON17, &CComBoxDlg::OnBnClickedButton17)
  39. ON_WM_DESTROY()
  40. ON_BN_CLICKED(IDC_BUTTON4, &CComBoxDlg::OnBnClickedButton4)
  41. ON_BN_CLICKED(IDC_BUTTON8, &CComBoxDlg::OnBnClickedButton8)
  42. ON_CBN_SELCHANGE(IDC_COMBO3, &CComBoxDlg::OnCbnSelchangeCombo3)
  43. ON_BN_CLICKED(IDC_BUTTON5, &CComBoxDlg::OnBnClickedButton5)
  44. ON_MESSAGE(WM_CBO_RBUTTONUP,OnRButtonUp)
  45. END_MESSAGE_MAP()
  46. void CComBoxDlg::DrawClientArea( CDC*pDC,int nWidth,int nHeight )
  47. {
  48. }
  49. // CComBoxDlg 消息处理程序
  50. BOOL CComBoxDlg::OnInitDialog()
  51. {
  52. CDlgControlItem::OnInitDialog();
  53. CString strItem=TEXT("");
  54. for (int i=0;i<10;i++)
  55. {
  56. strItem.Format(TEXT("Item%d"),i);
  57. m_ComboBox1.AddString(strItem);
  58. }
  59. for (int i=0;i<10;i++)
  60. {
  61. strItem.Format(TEXT("Item%d"),i);
  62. m_ComboBox2.InsertString(i,strItem);
  63. }
  64. m_ComboBox2.InsertString(2,TEXT("InsertString"));
  65. m_ComboBox2.DeleteString(3);
  66. m_ComboBox1.SetCurSel(5);
  67. m_ComboBox2.SetCurSel(0);
  68. int nCurSel = m_ComboBox1.GetCurSel();
  69. int nCount = m_ComboBox1.GetCount();
  70. //经典用法
  71. SetCombox(TEXT("city"),TEXT("CityCount"),TEXT("city"), &m_ComboBox3);
  72. OnCbnSelchangeCombo3();
  73. HDC hParentDC = GetBackDC();
  74. m_SkinComboBox.SetBgNormalPic(TEXT("Res\\ComboBox\\frameBorderEffect_normalDraw.png"), CRect(3,3,3,3));
  75. m_SkinComboBox.SetBgHotPic(TEXT("Res\\ComboBox\\frameBorderEffect_mouseDownDraw.png"), CRect(3,3,3,3));
  76. m_SkinComboBox.SetArrowNormalPic(TEXT("Res\\ComboBox\\login_inputbtn_normal.png"));
  77. m_SkinComboBox.SetArrowHotPic(TEXT("Res\\ComboBox\\login_inputbtn_highlight.png"));
  78. m_SkinComboBox.SetArrowPushedPic(TEXT("Res\\ComboBox\\login_inputbtn_down.png"));
  79. m_SkinComboBox.SetParentBack(hParentDC);
  80. m_SkinComboBox.SetArrowWidth(23);
  81. m_SkinComboBox.SetDefaultText(TEXT("请输入帐号"));
  82. m_SkinComboBox.SetItemHeight(-1, 22);
  83. for (int i=0;i<100;i++)
  84. {
  85. m_SkinComboBox.AddString(TEXT("Item"));
  86. }
  87. m_SkinComboBox2.SetBgNormalPic(TEXT("Res\\ComboBox\\frameBorderEffect_normalDraw.png"), CRect(3,3,3,3));
  88. m_SkinComboBox2.SetBgHotPic(TEXT("Res\\ComboBox\\frameBorderEffect_mouseDownDraw.png"), CRect(3,3,3,3));
  89. m_SkinComboBox2.SetArrowNormalPic(TEXT("Res\\ComboBox\\inputbtn_normal.png"));
  90. m_SkinComboBox2.SetArrowHotPic(TEXT("Res\\ComboBox\\inputbtn_highlight.png"));
  91. m_SkinComboBox2.SetArrowPushedPic(TEXT("Res\\ComboBox\\inputbtn_down.png"));
  92. m_SkinComboBox2.SetParentBack(hParentDC);
  93. m_SkinComboBox2.SetArrowWidth(23);
  94. m_SkinComboBox2.SetItemHeight(-1, 22);
  95. m_SkinComboBox2.SetDropList();
  96. m_SkinComboBox2.SetEditTextColor(RGB(255,0,0));
  97. RenderEngine->AddFont(TEXT("宋体"),20,false,false,false);
  98. m_SkinComboBox2.SetCtrlFont(RenderEngine->GetEndFont());
  99. m_SkinComboBox2.SetAllItemHeight(20);
  100. //m_SkinComboBox2.SetItemHeight(-1,50);
  101. //m_SkinComboBox2.SetScrollImage(TEXT("Res\\Scroll\\SKIN_SCROLL.bmp"));
  102. CSkinComboBox_ListBox *pListBox = m_SkinComboBox2.GetListBoxWnd();
  103. if ( pListBox != NULL )
  104. {
  105. pListBox->SetBackNormalImage(TEXT("Res\\Edit\\frameBorderEffect_mouseDownDraw.png"),CRect(3,3,3,3));
  106. pListBox->SetSelectImage(TEXT("Res\\ComboBox\\listitem_select.png"),CRect(3,3,3,3));
  107. pListBox->SetFrameColor(RGB(55,141,192));
  108. }
  109. for (int i=0;i<5;i++)
  110. {
  111. m_SkinComboBox2.AddString(TEXT("Item"));
  112. }
  113. m_SkinComboBox2.SetCurSel(0);
  114. return TRUE; // return TRUE unless you set the focus to a control
  115. // 异常: OCX 属性页应返回 FALSE
  116. }
  117. void CComBoxDlg::OnBnClickedButton1()
  118. {
  119. CString strText;
  120. //方法1
  121. m_ComboBox1.GetLBText(m_ComboBox1.GetCurSel(),strText);
  122. //方法2
  123. //m_ComboBox1.GetWindowText(strText);
  124. MessageBox(strText);
  125. }
  126. void CComBoxDlg::OnBnClickedButton2()
  127. {
  128. CString str;
  129. str.Format(TEXT("总数:%d"),m_ComboBox1.GetCount());
  130. MessageBox(str);
  131. }
  132. void CComBoxDlg::OnBnClickedButton3()
  133. {
  134. m_ComboBox1.ResetContent();
  135. }
  136. void CComBoxDlg::OnBnClickedButton14()
  137. {
  138. m_ComboBox1.ResetContent();
  139. CString strName; //学生姓名
  140. int nScore; //学生成绩
  141. srand(unsigned int(time(NULL)));
  142. for (int i=0;i<10;i++)
  143. {
  144. strName.Format(TEXT("学生%d"),i);
  145. nScore = 1+(rand()%100);
  146. m_ComboBox1.InsertString(i,strName);
  147. m_ComboBox1.SetItemData(i,nScore);
  148. }
  149. m_ComboBox1.SetCurSel(0);
  150. }
  151. void CComBoxDlg::OnBnClickedButton16()
  152. {
  153. CString strName; //学生姓名
  154. int nScore = m_ComboBox1.GetItemData(m_ComboBox1.GetCurSel());
  155. m_ComboBox1.GetWindowText(strName);
  156. strName.Format(TEXT("%s的成绩:%d"),strName,nScore);
  157. MessageBox(strName);
  158. }
  159. void CComBoxDlg::OnBnClickedButton15()
  160. {
  161. m_ComboBox1.ResetContent();
  162. tagStudent *pStudent = NULL;
  163. srand(unsigned int(time(NULL)));
  164. CString str;
  165. for (int i=0;i<10;i++)
  166. {
  167. pStudent = new tagStudent;
  168. str.Format(TEXT("学生%d"),i);
  169. lstrcpyn(pStudent->szName,str,CountArray(pStudent->szName));
  170. pStudent->nScore = 1+(rand()%100);
  171. pStudent->nID = 10*rand()%1000;
  172. m_ComboBox1.InsertString(i,pStudent->szName);
  173. m_ComboBox1.SetItemDataPtr(i,pStudent);
  174. }
  175. m_ComboBox1.SetCurSel(0);
  176. }
  177. void CComBoxDlg::OnBnClickedButton17()
  178. {
  179. tagStudent *pStudent = NULL;
  180. pStudent = (tagStudent *)m_ComboBox1.GetItemDataPtr(m_ComboBox1.GetCurSel());
  181. if( pStudent != NULL)
  182. {
  183. CString strOut;
  184. strOut.Format(TEXT("编号为:%d的学生[%s]的成绩:%d"),pStudent->nID,pStudent->szName,pStudent->nScore);
  185. MessageBox(strOut);
  186. }
  187. }
  188. void CComBoxDlg::OnDestroy()
  189. {
  190. tagStudent *pStudent = NULL;
  191. for (int i=0;i<m_ComboBox1.GetCount();i++)
  192. {
  193. pStudent = (tagStudent *)m_ComboBox1.GetItemDataPtr(i);
  194. SafeDelete(pStudent);
  195. }
  196. m_ComboBox1.ResetContent();
  197. CDlgControlItem::OnDestroy();
  198. }
  199. void CComBoxDlg::OnBnClickedButton4()
  200. {
  201. m_ComboBox1.SetItemHeight(-1,20);
  202. }
  203. void CComBoxDlg::OnBnClickedButton8()
  204. {
  205. for (int i=0;i<m_ComboBox1.GetCount();i++)
  206. {
  207. m_ComboBox1.SetItemHeight(i,25);
  208. }
  209. }
  210. void CComBoxDlg::OnCbnSelchangeCombo3()
  211. {
  212. //清空城市
  213. m_ComboBox4.ResetContent();
  214. //获取省份
  215. CString szProvince;
  216. m_ComboBox3.GetWindowText(szProvince);
  217. //设置数据
  218. SetCombox(szProvince,TEXT("AreaCount"),TEXT("Area"), &m_ComboBox4);
  219. }
  220. void CComBoxDlg::SetCombox(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpItemKeyName,CComboBox * pCComboBox )
  221. {
  222. if ( pCComboBox == NULL ) return;
  223. TCHAR szWorkDirectory[MAX_PATH];
  224. RenderEngine->GetWorkDirectory(szWorkDirectory,CountArray(szWorkDirectory));
  225. StrCat(szWorkDirectory,TEXT("\\RegionCfg.ini"));
  226. //读取文件
  227. TCHAR szCount[MAX_PATH];
  228. GetPrivateProfileString(lpAppName,lpKeyName,TEXT("0"),szCount,MAX_PATH,szWorkDirectory);
  229. //设置城市
  230. CString szTemp;
  231. TCHAR szCity[MAX_PATH];
  232. for (int i=1;i<_tcstol(szCount,NULL,10);i++)
  233. {
  234. szTemp.Format(TEXT("%s%d"),lpItemKeyName,i);
  235. GetPrivateProfileString(lpAppName,szTemp,TEXT(""),szCity,MAX_PATH,szWorkDirectory);
  236. pCComboBox->AddString(szCity);
  237. }
  238. pCComboBox->SetCurSel(0);
  239. }
  240. void CComBoxDlg::OnBnClickedButton5()
  241. {
  242. OpenLink(TEXT("http://www.gymsaga.com/project/419.html"));
  243. }
  244. LRESULT CComBoxDlg::OnRButtonUp( WPARAM wParam, LPARAM lParam )
  245. {
  246. CString str;
  247. str.Format(TEXT("选中的节点:%d"),int(wParam));
  248. MessageBox(str);
  249. return 0L;
  250. }