TcStaticDlg.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. // TcStaticDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "tcStatic.h"
  5. #include "TcStaticDlg.h"
  6. #include "DlgProxy.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #endif
  10. // TcStaticDlg 对话框
  11. IMPLEMENT_DYNAMIC(TcStaticDlg, CDialog);
  12. TcStaticDlg::TcStaticDlg(CWnd* pParent /*=NULL*/)
  13. : CDialog(TcStaticDlg::IDD, pParent)
  14. {
  15. EnableActiveAccessibility();
  16. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  17. m_pAutoProxy = NULL;
  18. m_bBackground = true;
  19. m_Count_One = 0;
  20. m_Count_Two = 0;
  21. }
  22. TcStaticDlg::~TcStaticDlg()
  23. {
  24. // 如果该对话框有自动化代理,则
  25. // 将此代理指向该对话框的后向指针设置为 NULL,以便
  26. // 此代理知道该对话框已被删除。
  27. if (m_pAutoProxy != NULL)
  28. m_pAutoProxy->m_pDialog = NULL;
  29. }
  30. void TcStaticDlg::DoDataExchange(CDataExchange* pDX)
  31. {
  32. CDialog::DoDataExchange(pDX);
  33. DDX_Control(pDX, IDC_STATIC_ONE, m_MyText_One);
  34. DDX_Control(pDX, IDC_STATIC_TWO, m_MyText_Two);
  35. }
  36. BEGIN_MESSAGE_MAP(TcStaticDlg, CDialog)
  37. ON_WM_CLOSE()
  38. ON_WM_PAINT()
  39. ON_WM_QUERYDRAGICON()
  40. //}}AFX_MSG_MAP
  41. ON_BN_CLICKED(IDC_FIRST, &TcStaticDlg::OnBnClickedFirst)
  42. ON_BN_CLICKED(IDC_SECOND, &TcStaticDlg::OnBnClickedSecond)
  43. END_MESSAGE_MAP()
  44. // TcStaticDlg 消息处理程序
  45. BOOL TcStaticDlg::OnInitDialog()
  46. {
  47. CDialog::OnInitDialog();
  48. // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
  49. // 执行此操作
  50. SetIcon(m_hIcon, TRUE); // 设置大图标
  51. SetIcon(m_hIcon, FALSE); // 设置小图标
  52. // TODO: 在此添加额外的初始化代码
  53. //tc:第一个静态文本框相关设置
  54. m_MyText_One.SetTextColor(RGB(254,254,254)); //tc:设置文本颜色
  55. m_MyText_One.SetMyFont(15,_T("Arial")); //tc:设置字体及其大小
  56. //tc:第二个静态文本框相关设置
  57. m_MyText_Two.SetTransparent(TRUE); //tc:这个类需要设置是否支持透明
  58. m_MyText_Two.SetTextColor(RGB(254,254,254)); //tc:设置文本颜色
  59. m_MyText_Two.SetFontName(_T("Arial")); //tc:设置字体
  60. m_MyText_Two.SetFontSize(15); //tc:设置字体大小
  61. return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
  62. }
  63. // 如果向对话框添加最小化按钮,则需要下面的代码
  64. // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
  65. // 这将由框架自动完成。
  66. void TcStaticDlg::OnPaint()
  67. {
  68. if (IsIconic())
  69. {
  70. CPaintDC dc(this); // 用于绘制的设备上下文
  71. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  72. // 使图标在工作区矩形中居中
  73. int cxIcon = GetSystemMetrics(SM_CXICON);
  74. int cyIcon = GetSystemMetrics(SM_CYICON);
  75. CRect rect;
  76. GetClientRect(&rect);
  77. int x = (rect.Width() - cxIcon + 1) / 2;
  78. int y = (rect.Height() - cyIcon + 1) / 2;
  79. // 绘制图标
  80. dc.DrawIcon(x, y, m_hIcon);
  81. }
  82. else
  83. {
  84. CPaintDC dc(this);
  85. if(m_bBackground){
  86. m_bBackground = false;
  87. BOOL b = m_backBmp.LoadBitmap(IDB_BACKGROUND);//IDB_BACKGROUND
  88. b = m_backDC.CreateCompatibleDC(&dc);
  89. m_backDC.SelectObject(m_backBmp);
  90. }
  91. dc.BitBlt(0,0,1024,768,&m_backDC,0,0,SRCCOPY);//360,320
  92. CDialog::OnPaint();
  93. }
  94. }
  95. //当用户拖动最小化窗口时系统调用此函数取得光标
  96. //显示。
  97. HCURSOR TcStaticDlg::OnQueryDragIcon()
  98. {
  99. return static_cast<HCURSOR>(m_hIcon);
  100. }
  101. // 当用户关闭 UI 时,如果控制器仍保持着它的某个
  102. // 对象,则自动化服务器不应退出。这些
  103. // 消息处理程序确保如下情形: 如果代理仍在使用,
  104. // 则将隐藏 UI;但是在关闭对话框时,
  105. // 对话框仍然会保留在那里。
  106. void TcStaticDlg::OnClose()
  107. {
  108. if (CanExit())
  109. CDialog::OnClose();
  110. }
  111. void TcStaticDlg::OnOK()
  112. {
  113. if (CanExit())
  114. CDialog::OnOK();
  115. }
  116. void TcStaticDlg::OnCancel()
  117. {
  118. //if (CanExit())
  119. CDialog::OnCancel();
  120. }
  121. BOOL TcStaticDlg::CanExit()
  122. {
  123. // 如果代理对象仍保留在那里,则自动化
  124. // 控制器仍会保持此应用程序。
  125. // 使对话框保留在那里,但将其 UI 隐藏起来。
  126. if (m_pAutoProxy != NULL)
  127. {
  128. ShowWindow(SW_HIDE);
  129. return FALSE;
  130. }
  131. return TRUE;
  132. }
  133. void TcStaticDlg::OnBnClickedFirst()
  134. {
  135. // TODO: 在此添加控件通知处理程序代码
  136. CString str;
  137. str.Format(_T("第一个文本框文本变化:%d"),m_Count_One);
  138. m_MyText_One.SetTextColor(RGB(243,248,8));
  139. m_Count_One++;
  140. m_MyText_One.SetText(str);
  141. m_MyText_One.SetMyFont(35,_T("楷体_GB2312"));
  142. }
  143. void TcStaticDlg::OnBnClickedSecond()
  144. {
  145. // TODO: 在此添加控件通知处理程序代码
  146. CString str;
  147. str.Format(_T("第二个文本框文本变化:%d"),m_Count_Two);
  148. m_Count_Two++;
  149. m_MyText_Two.SetText(str);
  150. m_MyText_Two.SetTextColor(RGB(243,248,8));
  151. m_MyText_Two.SetFontName(_T("楷体_GB2312"));
  152. m_MyText_Two.SetFontSize(25);
  153. }