TCLBDemoDlg.cpp
上传用户:dlhongjiu
上传日期:2007-01-01
资源大小:50k
文件大小:7k
源码类别:

按钮控件

开发平台:

Visual C++

  1. // TCLBDemoDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "TCLBDemo.h"
  5. #include "TCLBDemoDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CAboutDlg dialog used for App About
  13. class CAboutDlg : public CDialog
  14. {
  15. public:
  16. CAboutDlg();
  17. // Dialog Data
  18. //{{AFX_DATA(CAboutDlg)
  19. enum { IDD = IDD_ABOUTBOX };
  20. //}}AFX_DATA
  21. // ClassWizard generated virtual function overrides
  22. //{{AFX_VIRTUAL(CAboutDlg)
  23. protected:
  24. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  25. //}}AFX_VIRTUAL
  26. // Implementation
  27. protected:
  28. //{{AFX_MSG(CAboutDlg)
  29. //}}AFX_MSG
  30. DECLARE_MESSAGE_MAP()
  31. };
  32. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  33. {
  34. //{{AFX_DATA_INIT(CAboutDlg)
  35. //}}AFX_DATA_INIT
  36. }
  37. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39. CDialog::DoDataExchange(pDX);
  40. //{{AFX_DATA_MAP(CAboutDlg)
  41. //}}AFX_DATA_MAP
  42. }
  43. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  44. //{{AFX_MSG_MAP(CAboutDlg)
  45. // No message handlers
  46. //}}AFX_MSG_MAP
  47. END_MESSAGE_MAP()
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CTCLBDemoDlg dialog
  50. CTCLBDemoDlg::CTCLBDemoDlg(CWnd* pParent /*=NULL*/)
  51. : CDialog(CTCLBDemoDlg::IDD, pParent)
  52. {
  53. //{{AFX_DATA_INIT(CTCLBDemoDlg)
  54. // NOTE: the ClassWizard will add member initialization here
  55. //}}AFX_DATA_INIT
  56. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  57. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  58. m_pFont = new CFont;
  59. }
  60. void CTCLBDemoDlg::DoDataExchange(CDataExchange* pDX)
  61. {
  62. CDialog::DoDataExchange(pDX);
  63. //{{AFX_DATA_MAP(CTCLBDemoDlg)
  64. // NOTE: the ClassWizard will add DDX and DDV calls here
  65. //}}AFX_DATA_MAP
  66. }
  67. BEGIN_MESSAGE_MAP(CTCLBDemoDlg, CDialog)
  68. //{{AFX_MSG_MAP(CTCLBDemoDlg)
  69. ON_WM_SYSCOMMAND()
  70. ON_WM_PAINT()
  71. ON_WM_QUERYDRAGICON()
  72. ON_BN_CLICKED(IDC_RADIO1, OnDefaultRadio)
  73. ON_BN_CLICKED(IDC_RADIO2, OnEqualRadio)
  74. ON_BN_CLICKED(IDC_RADIO3, OnDiffRadio)
  75. ON_BN_CLICKED(IDC_RADIO4, OnDiffFontRadio)
  76. ON_WM_DESTROY()
  77. //}}AFX_MSG_MAP
  78. END_MESSAGE_MAP()
  79. /////////////////////////////////////////////////////////////////////////////
  80. // CTCLBDemoDlg message handlers
  81. void CTCLBDemoDlg::OnSysCommand(UINT nID, LPARAM lParam)
  82. {
  83. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  84. {
  85. CAboutDlg dlgAbout;
  86. dlgAbout.DoModal();
  87. }
  88. else
  89. {
  90. CDialog::OnSysCommand(nID, lParam);
  91. }
  92. }
  93. // If you add a minimize button to your dialog, you will need the code below
  94. //  to draw the icon.  For MFC applications using the document/view model,
  95. //  this is automatically done for you by the framework.
  96. void CTCLBDemoDlg::OnPaint() 
  97. {
  98. if (IsIconic())
  99. {
  100. CPaintDC dc(this); // device context for painting
  101. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  102. // Center icon in client rectangle
  103. int cxIcon = GetSystemMetrics(SM_CXICON);
  104. int cyIcon = GetSystemMetrics(SM_CYICON);
  105. CRect rect;
  106. GetClientRect(&rect);
  107. int x = (rect.Width() - cxIcon + 1) / 2;
  108. int y = (rect.Height() - cyIcon + 1) / 2;
  109. // Draw the icon
  110. dc.DrawIcon(x, y, m_hIcon);
  111. }
  112. else
  113. {
  114. CDialog::OnPaint();
  115. }
  116. }
  117. // The system calls this to obtain the cursor to display while the user drags
  118. //  the minimized window.
  119. HCURSOR CTCLBDemoDlg::OnQueryDragIcon()
  120. {
  121. return (HCURSOR) m_hIcon;
  122. }
  123. BOOL CTCLBDemoDlg::OnInitDialog()
  124. {
  125. CDialog::OnInitDialog();
  126. // Add "About..." menu item to system menu.
  127. // IDM_ABOUTBOX must be in the system command range.
  128. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  129. ASSERT(IDM_ABOUTBOX < 0xF000);
  130. CMenu* pSysMenu = GetSystemMenu(FALSE);
  131. if (pSysMenu != NULL)
  132. {
  133. CString strAboutMenu;
  134. strAboutMenu.LoadString(IDS_ABOUTBOX);
  135. if (!strAboutMenu.IsEmpty())
  136. {
  137. pSysMenu->AppendMenu(MF_SEPARATOR);
  138. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  139. }
  140. }
  141. // Set the icon for this dialog.  The framework does this automatically
  142. //  when the application's main window is not a dialog
  143. SetIcon(m_hIcon, TRUE); // Set big icon
  144. SetIcon(m_hIcon, FALSE); // Set small icon
  145. // TODO: Add extra initialization here
  146. m_pFont->CreateFont(-20, 0, 0, 0, FW_NORMAL, TRUE, FALSE, FALSE, 
  147. ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, 
  148. DEFAULT_QUALITY, FF_SWISS, "Arial" ); 
  149. m_ctrlCheckListBox.SubclassDlgItem(IDC_LIST1, this);
  150. int nTabStop = GetDialogUnitNumber() / 7; 
  151. LPINT lpTabStop = new int[2];
  152. lpTabStop[0] = nTabStop * 2;
  153. lpTabStop[1] = nTabStop * 5;
  154. m_ctrlCheckListBox.SetTabStops(2, lpTabStop);
  155. delete []lpTabStop;
  156. AddStringToList();
  157. return TRUE;  // return TRUE  unless you set the focus to a control
  158. }
  159. void CTCLBDemoDlg::AddStringToList()
  160. {
  161. CString str;
  162. str.Format(_T("%st%st%d"), "aaZAaa", "dddaaa", 1);
  163. m_ctrlCheckListBox.AddString(str);
  164. str.Format(_T("%st%st%s"), "AWWWA", "11", "asdAA");
  165. m_ctrlCheckListBox.AddString(str);
  166. str.Format(_T("%st%st%s"), "1Q", "aaa1", "?");
  167. m_ctrlCheckListBox.AddString(str);
  168. str.Format(_T("%st%st%s"), "1a", "1211", "asdf");
  169. m_ctrlCheckListBox.AddString(str);
  170. str.Format(_T("%st%st%s"), "AAQQ", "AWWG", "121");
  171. m_ctrlCheckListBox.AddString(str);
  172. }
  173. int CTCLBDemoDlg::GetDialogUnitNumber()
  174. {
  175. CRect rectList;
  176. m_ctrlCheckListBox.GetWindowRect(&rectList);
  177. CFont* pFont = m_ctrlCheckListBox.GetFont();
  178. LOGFONT lf;
  179. pFont->GetLogFont(&lf);
  180. int nBaseUnit = lf.lfWidth;
  181. if(nBaseUnit == 0)
  182. nBaseUnit = LOWORD(GetDialogBaseUnits());
  183. return (rectList.Width() *4) / nBaseUnit;
  184. }
  185. void CTCLBDemoDlg::OnDefaultRadio() 
  186. {
  187. // TODO: Add your control notification handler code here
  188. m_ctrlCheckListBox.ResetContent();
  189. m_ctrlCheckListBox.SetTabStops();  
  190. AddStringToList();
  191. }
  192. void CTCLBDemoDlg::OnEqualRadio() 
  193. {
  194. // TODO: Add your control notification handler code here
  195. m_ctrlCheckListBox.ResetContent();
  196. int nTabStop = GetDialogUnitNumber() / 3; 
  197. m_ctrlCheckListBox.SetTabStops(nTabStop);
  198. AddStringToList();
  199. }
  200. void CTCLBDemoDlg::OnDiffRadio() 
  201. {
  202. // TODO: Add your control notification handler code here
  203. m_ctrlCheckListBox.ResetContent();
  204. int nTabStop = GetDialogUnitNumber() / 6; 
  205. LPINT lpTabStop = new int[2];
  206. lpTabStop[0] = nTabStop * 4;
  207. lpTabStop[1] = nTabStop * 5;
  208. m_ctrlCheckListBox.SetTabStops(2, lpTabStop);
  209. AddStringToList();
  210. delete []lpTabStop;
  211. }
  212. void CTCLBDemoDlg::OnDiffFontRadio() 
  213. {
  214. // TODO: Add your control notification handler code here
  215. m_ctrlCheckListBox.SetFont(m_pFont ); 
  216. m_ctrlCheckListBox.ResetContent();
  217. int nTabStop = GetDialogUnitNumber() / 7; 
  218. LPINT lpTabStop = new int[2];
  219. lpTabStop[0] = nTabStop * 2;
  220. lpTabStop[1] = nTabStop * 5;
  221. m_ctrlCheckListBox.SetTabStops(2, lpTabStop);
  222. AddStringToList();
  223. delete []lpTabStop;
  224. }
  225. void CTCLBDemoDlg::OnDestroy() 
  226. {
  227. CDialog::OnDestroy();
  228. // TODO: Add your message handler code here
  229. delete m_pFont;
  230. }