⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cuowudlg.cpp

📁 控件串口简单事件触发,通过串口对控件进行通信
💻 CPP
字号:
// CuoWUDlg.cpp : implementation file
//

#include "stdafx.h"
#include "HTKJ.h"
#include "CuoWUDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCuoWUDlg dialog


CCuoWUDlg::CCuoWUDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCuoWUDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCuoWUDlg)
		m_ShowTitle = TRUE;
	m_ReSizeFlag = FALSE;
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);	
	//}}AFX_DATA_INIT
}


void CCuoWUDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCuoWUDlg)
	DDX_Control(pDX, IDC_EDIT3, m_edit3);
	DDX_Control(pDX, IDC_EDIT2, m_edit2);
	DDX_Control(pDX, IDC_EDIT1, m_edit1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCuoWUDlg, CDialog)
	//{{AFX_MSG_MAP(CCuoWUDlg)
		ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_WM_NCLBUTTONDOWN()
	ON_WM_NCMOUSEMOVE()
	ON_WM_SYSCOMMAND()
	ON_WM_SIZE()
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCuoWUDlg message handlers

void CCuoWUDlg::OnOK() 
{
	// TODO: Add extra validation here
     HRESULT hr;
	 extern CHTKJApp theApp;
	 CString n_password,m_password,password,str;
	 n_password=_T("");
	 m_password=_T("");
	 password=_T("");
	 GetDlgItem(IDC_EDIT1)->GetWindowText(password);
	 GetDlgItem(IDC_EDIT2)->GetWindowText(n_password);
     GetDlgItem(IDC_EDIT3)->GetWindowText(m_password);
     if(strcmp(n_password,m_password)!=0)
		 AfxMessageBox("新密码前后输入不一致!");
	 else
	 {
	   str.Format("select * from pfopserver where OP_serverno='%s' and OP_password='%s'",theApp.IDstr,password);
	   hr=theApp.AdoRecordset->Open(_variant_t(str),theApp.AdoConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	  if(FAILED(hr))
	  {
		AfxMessageBox("数据库无法连接!");
	  }
	  if(theApp.AdoRecordset->GetRecordCount()==0)
	  {
         AfxMessageBox("输入的原密码错误!");
	     theApp.AdoRecordset->Close(); 
	  }
	   else
	   {str.Format("update pfopserver set OP_password='%s' where OP_serverno='%s' and OP_password='%s'",m_password,theApp.IDstr,password);
	   theApp.AdoConnection->Execute(_bstr_t(str),NULL,adCmdText);
       theApp.AdoRecordset->Close(); 
	   AfxMessageBox("保存成功!");
	   CDialog::OnOK();
	   }
	 }
      GetDlgItem(IDC_EDIT1)->SetFocus();	
}
void CCuoWUDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		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;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}

}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CCuoWUDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

LRESULT CCuoWUDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	LRESULT lrst=CDialog::DefWindowProc(message, wParam, lParam);
	
	if (!::IsWindow(m_hWnd))
		return lrst;
	
	if (message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||message==WM_NCACTIVATE ||message == WM_NOTIFY)
	{
		CDC* pWinDC = GetWindowDC();
		if (pWinDC)
			DrawTitleBar(pWinDC);
		ReleaseDC(pWinDC);
	}
	return lrst;
}

void CCuoWUDlg::OnNcLButtonDown(UINT nHitTest, CPoint point) 
{
	
	CRect rtWnd;
	GetWindowRect(&rtWnd);

	//mouse坐标转化为本窗口坐标 重要
	point.x = point.x - rtWnd.left;
	point.y = point.y - rtWnd.top;
	//检测各按钮是否按到
	if (m_rtIcon.PtInRect(point))
		AfxMessageBox("检测各按钮是否按到");
	else
	{ 
		if (m_rtButtHelp.PtInRect(point))
		{
		SendMessage(WM_HELP);
		}
		else 
		{
			if (m_rtButtExit.PtInRect(point))
			{
				SendMessage(WM_CLOSE);
			}
			else 
			{
				if (m_rtButtMin.PtInRect(point))
				{
					m_ShowTitle = FALSE;
					SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, MAKELPARAM(point.x, point.y));
				}
				else 
				{
					if (m_rtButtMax.PtInRect(point))
					{
						m_ShowTitle = TRUE;
						if (IsZoomed())
							SendMessage(WM_SYSCOMMAND, SC_RESTORE, MAKELPARAM(point.x, point.y));
						else
						{
						//	SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, MAKELPARAM(point.x, point.y));
							Invalidate();
						}
					}
					else
					{
						if (!IsZoomed())
						{
							Default();						
						}
					}
				}
			}
		}
	}
}

void CCuoWUDlg::OnNcMouseMove(UINT nHitTest, CPoint point) 
{
	CDC* pDC = GetWindowDC();
	CDC* pDisplayMemDC=new CDC;
	pDisplayMemDC->CreateCompatibleDC(pDC);
	CBitmap* pBitmap = new CBitmap;
	CBitmap* pOldBitmap;
	CRect rtWnd, rtButton;

	if (pDC)
	{
		CString StrTemp = "";
		GetWindowRect(&rtWnd);
		//mouse坐标转化为本窗口坐标 重要
		point.x = point.x - rtWnd.left;
		point.y = point.y - rtWnd.top;
		//判断mouse是否移到系统按钮上
		if (m_rtButtExit.PtInRect(point))
		{
			pBitmap->LoadBitmap(IDB_EXIT_FOCUS);
			StrTemp = _T("关闭");
		}
		else
		{
			if(m_rtButtMin.PtInRect(point))
			{
				pBitmap->LoadBitmap(IDB_MIN_FOCUS);
				StrTemp = _T("最小化窗口");
			}
			else
			{
				if(m_rtButtMax.PtInRect(point))
				{
					pBitmap->LoadBitmap(IDB_MAX_FOCUS);
					if(IsZoomed())
					{
						StrTemp = _T("还原窗口");
					}
					else
					{
						StrTemp = _T("最化大窗口");
					}
				}
				else
				{
					pBitmap->LoadBitmap(IDB_NORMAL);
				}
			}
		}

		rtButton = m_rtButtMin;
		BITMAP BmpInfo;
		pBitmap->GetBitmap(&BmpInfo);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pDC->BitBlt(rtButton.left-6, rtButton.top-2, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
		pDisplayMemDC->SelectObject(pOldBitmap);
		pBitmap->DeleteObject();
		CRect ShowTipRec;
		ShowTipRec = m_rtButtMin;
		if(!StrTemp.IsEmpty())
		{
			ScreenToClient(&ShowTipRec);
			m_ToolTip.AddToolTip(IDD_CuoWUDlg,&ShowTipRec,StrTemp);
			m_ToolTip.SetDelayTime(200);
        }
	}
	
	ReleaseDC(pDisplayMemDC);
	ReleaseDC(pDC);
	delete pDisplayMemDC;
	delete pBitmap;

	CDialog::OnNcMouseMove(nHitTest, point);
}

void CCuoWUDlg::DrawTitleBar(CDC *pDC)
{
	if (m_hWnd)
	{
		CBrush Brush(RGB(0,100,255));
		CBrush* pOldBrush = pDC->SelectObject(&Brush);

		CRect rtWnd, rtTitle, rtButtons;
		GetWindowRect(&rtWnd); 
		//取得标题栏的位置
		rtTitle.left = GetSystemMetrics(SM_CXFRAME);
		rtTitle.top = GetSystemMetrics(SM_CYFRAME);
		rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);
		rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);

		//计算最小化按钮的位置,位图大小为15X15
		rtButtons.left = rtTitle.right-60;
		rtButtons.top= rtTitle.top+2+4;
		rtButtons.right = rtTitle.right-42;
		rtButtons.bottom = rtTitle.top+20+4;
		m_rtButtMin = rtButtons;
		//计算最大化按钮的位置,位图大小为15X15
		m_rtButtMax.left = m_rtButtMin.left + 18;
		m_rtButtMax.top = m_rtButtMin.top;
		m_rtButtMax.right = m_rtButtMin.right + 16;
		m_rtButtMax.bottom = m_rtButtMin.bottom;

		m_rtButtExit.left = m_rtButtMax.left + 18;
		m_rtButtExit.top =  m_rtButtMax.top;
		m_rtButtExit.right = m_rtButtMax.right + 16;
		m_rtButtExit.bottom = m_rtButtMax.bottom;


		//准备画图
		CBitmap* pBitmap = new CBitmap;
		BITMAP BmpInfo;
		CBitmap* pOldBitmap;
		CDC* pDisplayMemDC=new CDC;
		pDisplayMemDC->CreateCompatibleDC(pDC);

		//重画最Caption
		POINT  DrawPonit;
		DrawPonit.x =	rtTitle.left-4;
		DrawPonit.y =	rtTitle.top-4;
		pBitmap->LoadBitmap(IDB_TITLE_LEFT);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pBitmap->GetBitmap(&BmpInfo);
		pDC->BitBlt(rtTitle.left-4, rtTitle.top-4, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
		DrawPonit.x = DrawPonit.x + BmpInfo.bmWidth;
		pDisplayMemDC->SelectObject(pOldBitmap);
		pBitmap->DeleteObject();

		pBitmap->LoadBitmap(IDB_TOP);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pBitmap->GetBitmap(&BmpInfo);
		while(DrawPonit.x<= m_rtButtMin.left-66) 
		{
			pDC->BitBlt(DrawPonit.x, DrawPonit.y, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
			DrawPonit.x = DrawPonit.x + BmpInfo.bmWidth;
		}
		pDisplayMemDC->SelectObject(pOldBitmap);
		pBitmap->DeleteObject();

		pBitmap->LoadBitmap(IDB_TITLE_RIGHT);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pBitmap->GetBitmap(&BmpInfo);
		pDC->BitBlt(DrawPonit.x-47, DrawPonit.y, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);

		pDisplayMemDC->SelectObject(pOldBitmap);
		pBitmap->DeleteObject();



		//重画最小化button
		rtButtons = m_rtButtMin;
		pBitmap->LoadBitmap(IDB_NORMAL);
		pBitmap->GetBitmap(&BmpInfo);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pDC->BitBlt(rtButtons.left-6, rtButtons.top-2, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
		pDisplayMemDC->SelectObject(pOldBitmap);
		pBitmap->DeleteObject();

		int nOldMode = pDC->SetBkMode(TRANSPARENT);
		COLORREF clOldText=pDC->GetTextColor();		
		CFont titleFont;	
		titleFont.CreateFont( 22, // nHeight 
							8, // nWidth 
							0, // nEscapement文本行逆时针旋转角度 
							0, // nOrientation字体角度
							FW_BOLD, // nWeight字体粗细程度 
							FALSE, // bItalic 
							FALSE, // bUnderline 
							0, // cStrikeOut 删除线
							ANSI_CHARSET, // nCharSet 
							OUT_DEFAULT_PRECIS, // nOutPrecision 
							CLIP_DEFAULT_PRECIS, // nClipPrecision 
							DEFAULT_QUALITY, // nQuality 
							DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily 
							_T("隶书")); // lpszFac		pDC->SelectStockObject(SYSTEM_FIXED_FONT);		
		CFont *OldFont;
		OldFont = pDC->SelectObject(&titleFont);
		CString m_StrTitle;
		GetWindowText(m_StrTitle);
		pDC->SetTextColor(RGB(80,255,25));
		if(m_ShowTitle)
		{
			pDC->TextOut(102,12,m_StrTitle);	
		}
		else
		{   
			m_StrTitle = m_StrTitle.Left(6);
			m_StrTitle += "...";
			pDC->TextOut(30,10,m_StrTitle);	
		}
		pDC->SetBkMode(nOldMode);
		pDC->SetTextColor(clOldText);
		pDC->SelectObject(OldFont);
	//	pDC->TextOut(60,60,m_StrTitle);	
		//重画左边框
		pBitmap->LoadBitmap(IDB_LEFTDOWN);
		pBitmap->GetBitmap(&BmpInfo);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		int i ;
		for (i= 25;i<=rtWnd.bottom;i=i+BmpInfo.bmHeight-3)
		{
			pDC->BitBlt(-3, rtButtons.top+i, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
		}
		pDisplayMemDC->SelectObject(pOldBitmap);
		pBitmap->DeleteObject();

		//重画右边框
		pBitmap->LoadBitmap(IDB_RIGHTDOWN);
		pBitmap->GetBitmap(&BmpInfo);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		GetClientRect(&rtWnd);
		for (i= 35;i<=rtWnd.bottom+27;i=i+BmpInfo.bmHeight-3)
		{
			pDC->BitBlt(rtWnd.right, i, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
		}
		pDisplayMemDC->SelectObject(pOldBitmap);
		pBitmap->DeleteObject();

		//重画底边框
		pBitmap->LoadBitmap(IDB_DOWN);
		pBitmap->GetBitmap(&BmpInfo);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		GetClientRect(&rtWnd);
		for (i=2; i<=rtWnd.right+27; i=i+2)
		{
			//GetClientRect(&rtWnd);
		//	pDC->BitBlt(i,rtWnd.bottom+26, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
	        pDC->BitBlt(i,rtWnd.bottom+20, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
		}
		pDisplayMemDC->SelectObject(pOldBitmap);
		pBitmap->DeleteObject();

		//重画图标
	//	m_rtIcon.left = 3;//rtWnd.Width(-)5;
	//	m_rtIcon.top =  GetSystemMetrics(SM_CYFRAME);
	//	m_rtIcon.right = m_rtIcon.left + 32;
	//	m_rtIcon.bottom = m_rtIcon.top + 32;
	//	::DrawIconEx(pDC->m_hDC, m_rtIcon.left, m_rtIcon.top, m_hIcon, 
	//	m_rtIcon.Width(), m_rtIcon.Height(), 0, NULL, DI_NORMAL);
	//	m_rtIcon.OffsetRect(rtWnd.TopLeft()); 

		ReleaseDC(pDisplayMemDC);
		delete pDisplayMemDC;
		delete pBitmap;
	}
}

void CCuoWUDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
		if (nID == SC_CLOSE)
		{
			AfxGetMainWnd()->DestroyWindow();//关闭应用程序
			return;
		}
		if (nID == SC_RESTORE)
		{
			ShowWindow(SW_NORMAL);//restore应用程序
			m_ShowTitle = TRUE;
			return;
		}

		CDialog::OnSysCommand(nID, lParam);
}
float WidthScale;
float HeightScale;


BOOL CALLBACK EnumChildProcSun(HWND hwnd,LPARAM lParam)

{
	CRect rtCtrl,rtWnd;	
	if(hwnd)
	{
		//::SetWindowText(hwnd,"bcdef");
		::GetWindowRect(hwnd,&rtCtrl);
		::GetWindowRect(GetParent(hwnd),&rtWnd);
		rtCtrl.OffsetRect(-rtWnd.left-3,-rtWnd.top-29);
		float temp;
		temp= (float)rtCtrl.left*WidthScale;
		rtCtrl.left  = (int)temp;
		temp= (float)rtCtrl.top*HeightScale;
		rtCtrl.top =  (int)temp;
		temp = (float)rtCtrl.right*WidthScale;
		rtCtrl.right = (int)temp;
		temp =(float)rtCtrl.bottom*HeightScale;
		rtCtrl.bottom  = (int)temp;
		::MoveWindow(hwnd,rtCtrl.left,rtCtrl.top,
			         rtCtrl.Width(),
					 rtCtrl.Height(),
					TRUE);
		return TRUE;
	}
	else
	{
		return FALSE;
	}

}
void CCuoWUDlg::OnSize(UINT nType, int cx, int cy) 
{

	CDialog::OnSize(nType, cx, cy);
/*	if(m_ReSizeFlag)
	{
		if(nType!=1)
		{
		CRect rtWnd;
		GetWindowRect(&rtWnd);
		
		WidthScale = (float)rtWnd.Width()/(float)m_OldWidth; // new/Old
		HeightScale = (float)rtWnd.Height()/(float)m_OldHeight;		
		m_OldWidth = rtWnd.Width();  //保存新的Size;
		m_OldHeight = rtWnd.Height();
		HWND hWnd;
		hWnd = GetSafeHwnd(); 
		EnumChildWindows(hWnd,(WNDENUMPROC)EnumChildProcSun,0);
		}
	}*/
	// TODO: Add your message handler code here
	
}


void CCuoWUDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default	
	
	CDialog::OnMouseMove(nFlags, point);

}
BOOL CCuoWUDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
    GetWindowRect(&dlgrect);
	MoveWindow(GetSystemMetrics(SM_CXSCREEN)-800, 30,
	dlgrect.Width(), dlgrect.Height(), true);
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	m_ToolTip.Create(this,TTS_ALWAYSTIP);//创建工具提示控件,TTS_ALWAYSTIP表示,	
	m_ReSizeFlag  = TRUE;
	CRect rtWnd;
	GetClientRect(rtWnd);
	m_OldWidth = rtWnd.Width();
	m_OldHeight = rtWnd.Height();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -