// TcStaticDlg.cpp : 实现文件 // #include "stdafx.h" #include "tcStatic.h" #include "TcStaticDlg.h" #include "DlgProxy.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // TcStaticDlg 对话框 IMPLEMENT_DYNAMIC(TcStaticDlg, CDialog); TcStaticDlg::TcStaticDlg(CWnd* pParent /*=NULL*/) : CDialog(TcStaticDlg::IDD, pParent) { EnableActiveAccessibility(); m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_pAutoProxy = NULL; m_bBackground = true; m_Count_One = 0; m_Count_Two = 0; } TcStaticDlg::~TcStaticDlg() { // 如果该对话框有自动化代理,则 // 将此代理指向该对话框的后向指针设置为 NULL,以便 // 此代理知道该对话框已被删除。 if (m_pAutoProxy != NULL) m_pAutoProxy->m_pDialog = NULL; } void TcStaticDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_ONE, m_MyText_One); DDX_Control(pDX, IDC_STATIC_TWO, m_MyText_Two); } BEGIN_MESSAGE_MAP(TcStaticDlg, CDialog) ON_WM_CLOSE() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_FIRST, &TcStaticDlg::OnBnClickedFirst) ON_BN_CLICKED(IDC_SECOND, &TcStaticDlg::OnBnClickedSecond) END_MESSAGE_MAP() // TcStaticDlg 消息处理程序 BOOL TcStaticDlg::OnInitDialog() { CDialog::OnInitDialog(); // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 //tc:第一个静态文本框相关设置 m_MyText_One.SetTextColor(RGB(254,254,254)); //tc:设置文本颜色 m_MyText_One.SetMyFont(15,_T("Arial")); //tc:设置字体及其大小 //tc:第二个静态文本框相关设置 m_MyText_Two.SetTransparent(TRUE); //tc:这个类需要设置是否支持透明 m_MyText_Two.SetTextColor(RGB(254,254,254)); //tc:设置文本颜色 m_MyText_Two.SetFontName(_T("Arial")); //tc:设置字体 m_MyText_Two.SetFontSize(15); //tc:设置字体大小 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void TcStaticDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dc(this); if(m_bBackground){ m_bBackground = false; BOOL b = m_backBmp.LoadBitmap(IDB_BACKGROUND);//IDB_BACKGROUND b = m_backDC.CreateCompatibleDC(&dc); m_backDC.SelectObject(m_backBmp); } dc.BitBlt(0,0,1024,768,&m_backDC,0,0,SRCCOPY);//360,320 CDialog::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR TcStaticDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } // 当用户关闭 UI 时,如果控制器仍保持着它的某个 // 对象,则自动化服务器不应退出。这些 // 消息处理程序确保如下情形: 如果代理仍在使用, // 则将隐藏 UI;但是在关闭对话框时, // 对话框仍然会保留在那里。 void TcStaticDlg::OnClose() { if (CanExit()) CDialog::OnClose(); } void TcStaticDlg::OnOK() { if (CanExit()) CDialog::OnOK(); } void TcStaticDlg::OnCancel() { //if (CanExit()) CDialog::OnCancel(); } BOOL TcStaticDlg::CanExit() { // 如果代理对象仍保留在那里,则自动化 // 控制器仍会保持此应用程序。 // 使对话框保留在那里,但将其 UI 隐藏起来。 if (m_pAutoProxy != NULL) { ShowWindow(SW_HIDE); return FALSE; } return TRUE; } void TcStaticDlg::OnBnClickedFirst() { // TODO: 在此添加控件通知处理程序代码 CString str; str.Format(_T("第一个文本框文本变化:%d"),m_Count_One); m_MyText_One.SetTextColor(RGB(243,248,8)); m_Count_One++; m_MyText_One.SetText(str); m_MyText_One.SetMyFont(35,_T("楷体_GB2312")); } void TcStaticDlg::OnBnClickedSecond() { // TODO: 在此添加控件通知处理程序代码 CString str; str.Format(_T("第二个文本框文本变化:%d"),m_Count_Two); m_Count_Two++; m_MyText_Two.SetText(str); m_MyText_Two.SetTextColor(RGB(243,248,8)); m_MyText_Two.SetFontName(_T("楷体_GB2312")); m_MyText_Two.SetFontSize(25); }