当前位置: 首页 > news >正文

体检中心网站建设方案外贸网站支付系统

体检中心网站建设方案,外贸网站支付系统,iis7 发布静态网站,移动无线宽带怎么续费文章目录 GDI对象画笔和画刷来开发控件梯形边框的按钮控件CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp 矩形边框的三态按钮控件 CToolTipCtrl开发动静态提示CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp: 实现文件 矩形边框的三态按钮控件 CToolTipCtrl开发动… 文章目录 GDI对象画笔和画刷来开发控件梯形边框的按钮控件CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp 矩形边框的三态按钮控件 CToolTipCtrl开发动静态提示CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp: 实现文件 矩形边框的三态按钮控件 CToolTipCtrl开发动态提示CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp 附录 GDI对象画笔和画刷来开发控件 梯形边框的按钮控件 CMainDlg.h class CMainDlg : public CDialogEx { // 构造CLadderCtrl m_ladd;protected:virtual BOOL OnInitDialog();afx_msg void OnPaint(); public:afx_msg void OnSize(UINT nType, int cx, int cy); };CMainDlg.cpp void CMainDlg::OnSize(UINT nType, int cx, int cy) {CDialogEx::OnSize(nType, cx, cy);if (m_ladd){m_ladd.SetWindowPos(NULL, 0, cy - 20, cx, cy, SWP_NOZORDER);} }BOOL CMainDlg::OnInitDialog(){CDialogEx::OnInitDialog();SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标CRect rect;GetClientRect(rect);rect.top rect.bottom - 20;m_ladd.Create(WS_CHILD | WS_VISIBLE, rect, this,8888);m_ladd.InsertItem(0, _T(组建));m_ladd.InsertItem(1, _T(调试));m_ladd.InsertItem(2, _T(在文件1中查找));m_ladd.InsertItem(3, _T(在文件2中查找));m_ladd.InsertItem(4, _T(结果));return TRUE; // 除非将焦点设置到控件否则返回 TRUE }CLadderCtrl.h class CLadderCtrl : public CWnd{DECLARE_DYNAMIC(CLadderCtrl)CStringArray m_ds; //存储一组字符串 使用Add方法添加新的字符串使用RemoveAt方法删除指定位置的字符串使用GetAt方法获取特定位置的字符串等。int m_nIndex{}; CBrush m_br, m_brSel;CFont m_font, m_fontSel; public:CLadderCtrl();virtual ~CLadderCtrl();BOOL Create(DWORD dwStyle, CRect rect, CWnd* pParent, int nID);LONG InsertItem(int nItem, LPCTSTR lpszItem);int SetCurSel(int nItem);int GetCurSel() const;int GetItemCount() const;BOOL DeleteAllItems(); BOOL DeleteItem(int nItem); };CLadderCtrl.cpp CLadderCtrl::CLadderCtrl(){m_br.CreateSolidBrush(GetSysColor(COLOR_BTNFACE));m_brSel.CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT));HFONT hfont (HFONT)GetStockObject(DEFAULT_GUI_FONT); // GetStockObject 返回的是void* 要给转为具体类型LOGFONT lf;GetObject(hfont, sizeof(lf), lf);m_font.CreateFontIndirect(lf);lf.lfWeight 700;m_fontSel.CreateFontIndirect(lf); } CLadderCtrl::~CLadderCtrl() {} BOOL CLadderCtrl::Create(DWORD dwStyle, CRect rect, CWnd* pParent, int nID){return CWnd::Create(NULL, NULL, dwStyle, rect, pParent, nID); }LONG CLadderCtrl::InsertItem(int nItem, LPCTSTR lpszItem) {m_ds.InsertAt(nItem,lpszItem);return nItem; } int CLadderCtrl::SetCurSel(int nItem) {return 0; } int CLadderCtrl::GetCurSel() const {return 0; }int CLadderCtrl::GetItemCount() const {return (int)m_ds.GetCount(); } BOOL CLadderCtrl::DeleteAllItems() {m_ds.RemoveAll();return TRUE; } BOOL CLadderCtrl::DeleteItem(int nItem) {m_ds.RemoveAt(nItem);return TRUE; }void CLadderCtrl::OnPaint() {CPaintDC dc(this); // device context for paintingCRect rect;GetClientRect(rect);dc.SetBkMode(TRANSPARENT);dc.FillSolidRect(rect, GetSysColor(COLOR_INFOBK));int i -1, nCount (int) m_ds.GetCount();const int H rect.Height(); //创建一个宽度为矩形高度的四分之一高度为整个矩形高度的矩形rc。CRect rc{ H/4,0,0,rect.bottom };dc.SelectObject(m_br);POINT ptSel[4];CString sSel;CRect rSel;dc.SelectObject(m_font); //宋体9 就是默认字体/*HFONT hFont (HFONT)GetStockObject(DEFAULT_GUI_FONT);LOGFONT lf;GetObject(hFont, sizeof(lf), lf);*/while (inCount){CString str m_ds[i];CSize size dc.GetTextExtent(str); //获取字符串str在设备上下文dc中的宽度和高度并将结果存储在CSize对象size中rc.right rc.left size.cx H; //左边界加上字符串宽度和一个常量H 可以保证矩形rc的宽度至少能够容纳字符串并且在右边留出一个宽度为常量H的空白区域POINT pts[] { {rc.left-H/4,rc.top},{rc.right H / 4,rc.top},{rc.right - H / 4,rc.bottom},{rc.left H / 4,rc.bottom} };if (i!m_nIndex){dc.Polygon(pts, _countof(pts));//dc.Rectangle(rc);dc.DrawText(str, rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);}else{memcpy(ptSel, pts, sizeof(pts));sSel str;rSel rc;}rc.left rc.right;}dc.SelectObject(m_brSel);dc.Polygon(ptSel, _countof(ptSel)); //要覆盖二次绘画dc.SelectObject(m_fontSel);dc.DrawText(sSel, rSel, DT_CENTER | DT_VCENTER | DT_SINGLELINE);} // dc.TextOut(0, 0, _T(测试系统颜色));void CLadderCtrl::OnLButtonDown(UINT nFlags, CPoint point) //和上面算法一致 这个用来算出位置 {CWnd::OnLButtonDown(nFlags, point);CClientDC dc(this);dc.SelectStockObject(DEFAULT_GUI_FONT);int i -1, nCount (int)m_ds.GetCount();CRect rect;GetClientRect(rect);CRect rc{ 0,0,0,rect.bottom };while (inCount) {CString str m_ds[i];CSize size dc.GetTextExtent(str);rc.right rc.left size.cx rect.Height();dc.SelectObject(i m_nIndex ? m_brSel : m_br);if (rc.PtInRect(point)){if (i ! m_nIndex) //去除无效点击 {m_nIndex i;Invalidate(FALSE);}break;}rc.left rc.right;} }矩形边框的三态按钮控件 CToolTipCtrl开发动静态提示 CMainDlg.h #include CLadderCtrl.h class CMainDlg : public CDialogEx { // 构造CLadderCtrl m_ladd; CToolTipCtrl m_tip; public:CMainDlg(CWnd* pParent nullptr); // 标准构造函数 public:afx_msg void OnSize(UINT nType, int cx, int cy);virtual BOOL PreTranslateMessage(MSG* pMsg); };CMainDlg.cpp BOOL CMainDlg::OnInitDialog() {CDialogEx::OnInitDialog();CRect rect;GetClientRect(rect);rect.top rect.bottom - 20;m_ladd.Create(WS_CHILD | WS_VISIBLE, rect, this,8888);m_ladd.InsertItem(0, _T(组建));m_ladd.InsertItem(1, _T(调试));m_ladd.InsertItem(2, _T(在文件1中查找));m_ladd.InsertItem(3, _T(在文件2中查找));m_ladd.InsertItem(4, _T(结果));m_tip.Create(this);m_tip.AddTool(m_ladd, _T(没想到吧));return TRUE; // 除非将焦点设置到控件否则返回 TRUE }void CMainDlg::OnSize(UINT nType, int cx, int cy) {CDialogEx::OnSize(nType, cx, cy);if (m_ladd)m_ladd.SetWindowPos(NULL, 0, cy - 20, cx, 20, SWP_NOZORDER); } BOOL CMainDlg::PreTranslateMessage(MSG* pMsg) //皇军的岗楼 {m_tip.RelayEvent(pMsg);return CDialogEx::PreTranslateMessage(pMsg); }CLadderCtrl.h class CLadderCtrl : public CWnd {DECLARE_DYNAMIC(CLadderCtrl)CStringArray m_ds;int m_nIndex{};int m_nTrack{};CBrush m_br, m_brSel,m_brTrack; //三态按钮 三态控件 没有选中色(普通) 选中色 放在上面的框色(追踪态)CBrush m_brBack;CPen m_pen;int GetIndex(CPoint point); public:CLadderCtrl();virtual ~CLadderCtrl();BOOL Create(DWORD dwStyle, CRect rect, CWnd* pParent, int nID);LONG InsertItem(int nItem, LPCTSTR lpszItem);int SetCurSel(int nItem);int GetCurSel() const;int GetItemCount() const;BOOL DeleteAllItems();BOOL DeleteItem(int nItem); // 对话框数据 #ifdef AFX_DESIGN_TIMEenum { IDD IDD_MAIN_DIALOG }; #endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持DECLARE_MESSAGE_MAP() public:afx_msg void OnPaint();afx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg void OnMouseMove(UINT nFlags, CPoint point); };CLadderCtrl.cpp: 实现文件 #include pch.h #include CreatControl.h #include afxdialogex.h #include CLadderCtrl.h CLadderCtrl::CLadderCtrl() //有对应的构造函数可以在定义时直接给予初始化{} {m_br.CreateSolidBrush(RGB(64,86,140));m_brSel.CreateSolidBrush(RGB(230,245,255)); m_brTrack.CreateSolidBrush(RGB(187, 194, 241));m_brBack.CreateSolidBrush(RGB(93, 107, 153)); //默认的背景m_pen.CreatePen(PS_SOLID, 1, RGB(93, 107, 153)); } CLadderCtrl::~CLadderCtrl() { }BOOL CLadderCtrl::Create(DWORD dwStyle, CRect rect, CWnd* pParent, int nID) {return CWnd::Create(NULL, NULL, dwStyle, rect, pParent, nID); } LONG CLadderCtrl::InsertItem(int nItem, LPCTSTR lpszItem) {m_ds.InsertAt(nItem,lpszItem);return nItem; } int CLadderCtrl::SetCurSel(int nItem) {ASSERT(nItem -1 nItem m_ds.GetCount());m_nIndex nItem;Invalidate(FALSE);return 0; } int CLadderCtrl::GetCurSel() const {return m_nIndex; }int CLadderCtrl::GetItemCount() const {return (int)m_ds.GetCount(); }BOOL CLadderCtrl::DeleteAllItems() {m_ds.RemoveAll();return TRUE; }BOOL CLadderCtrl::DeleteItem(int nItem) {m_ds.RemoveAt(nItem);return TRUE; }void CLadderCtrl::DoDataExchange(CDataExchange* pDX) {CWnd::DoDataExchange(pDX); }BEGIN_MESSAGE_MAP(CLadderCtrl, CWnd)ON_WM_PAINT()ON_WM_LBUTTONDOWN()ON_WM_MOUSEMOVE() END_MESSAGE_MAP()void CLadderCtrl::OnPaint() {CPaintDC dc(this); // device context for paintingCRect rect;GetClientRect(rect);dc.SetBkMode(TRANSPARENT);dc.FillRect(rect,m_brBack);int i -1, nCount (int) m_ds.GetCount();int nLeft 0;CRect rc{ 0,0,0,rect.bottom };CFont* pFont GetFont();dc.SelectStockObject(DEFAULT_GUI_FONT); //宋体9 就是默认字体dc.SelectObject(m_pen);/*HFONT hFont (HFONT)GetStockObject(DEFAULT_GUI_FONT);LOGFONT lf;GetObject(hFont, sizeof(lf), lf);*/while (inCount){CString str m_ds[i];CSize size dc.GetTextExtent(str);rc.right rc.left size.cx rect.Height();if (i m_nIndex){dc.SelectObject(m_brSel);dc.SetTextColor(GetSysColor(COLOR_WINDOWTEXT));}else if (i m_nTrack){dc.SelectObject(m_brTrack);dc.SetTextColor(GetSysColor(COLOR_WINDOWTEXT));}else{dc.SetTextColor(GetSysColor(COLOR_HIGHLIGHTTEXT));dc.SelectObject(m_br);}//dc.SelectObject(i m_nIndex ? m_brSel:m_br); dc.Rectangle(rc);dc.DrawText(str, rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);rc.left rc.right;}} // dc.TextOut(0, 0, _T(测试系统颜色));int CLadderCtrl::GetIndex(CPoint point) {CClientDC dc(this);dc.SelectStockObject(DEFAULT_GUI_FONT);int i -1, nCount (int)m_ds.GetCount();CRect rect;GetClientRect(rect);CRect rc{ 0,0,0,rect.bottom };while (i nCount){CString str m_ds[i];CSize size dc.GetTextExtent(str);rc.right rc.left size.cx rect.Height();dc.SelectObject(i m_nIndex ? m_brSel : m_br);if (rc.PtInRect(point)){return i;}rc.left rc.right;}return -1; }void CLadderCtrl::OnLButtonDown(UINT nFlags, CPoint point) //和上面算法一致 这个用来算出位置 {int nIndex GetIndex(point);if (nIndex ! m_nIndex) //去除无效点击 {m_nIndex nIndex;Invalidate(FALSE);}CWnd::OnLButtonDown(nFlags, point); }void CLadderCtrl::OnMouseMove(UINT nFlags, CPoint point) {int nIndex GetIndex(point);if (nIndex m_nIndex) return;if (m_nTrack!nIndex) {m_nTrack nIndex;Invalidate(FALSE);}CWnd::OnMouseMove(nFlags, point); }矩形边框的三态按钮控件 CToolTipCtrl开发动态提示 本次只添加了与静态提示不同之处的代码 CMainDlg.h #include CLadderCtrl.h class CMainDlg : public CDialogEx { // 构造CLadderCtrl m_ladd; CToolTipCtrl m_tip; public:CMainDlg(CWnd* pParent nullptr); // 标准构造函数public:afx_msg void OnSize(UINT nType, int cx, int cy);virtual BOOL PreTranslateMessage(MSG* pMsg);afx_msg BOOL SetTipText(UINT id, NMHDR* pHdr, LRESULT* pResult);//反射型消息 手动创建的 一消息一函数一控件 一IDafx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); };CMainDlg.cpp 设置动态文字的函数 BOOL CMainDlg::SetTipText(UINT id, NMHDR* pHdr, LRESULT* pResult){int nIndex m_ladd.GetTrack();if (nIndex 0 || nIndex m_ladd.GetItemCount())return FALSE;TOOLTIPTEXT* pText (TOOLTIPTEXT*)pHdr;if (pText-uFlags TTF_IDISHWND){auto nID (int)pHdr-idFrom;CString str m_ladd.GetItemText(nIndex);_tcscpy_s(pText-szText, 80, str);return TRUE;}return FALSE;return 0; }BOOL CMainDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message){switch (pWnd-GetDlgCtrlID()) {case 8888:{static int nTrack -1; // 用来看它是否切换 全局变量int n m_ladd.GetTrack();if (nTrack !n ){ //切换算法nTrack n;m_tip.Update();}}break;}return CDialogEx::OnSetCursor(pWnd, nHitTest, message); }CLadderCtrl.h class CLadderCtrl : public CWnd{CStringArray m_ds;int m_nIndex{};int m_nTrack{};CBrush m_br, m_brSel,m_brTrack; //三态按钮 没有选中色(普通) 选中色 放在上面的框色(追踪态)CBrush m_brBack;int GetIndex(CPoint point); public:int GetTrack() const{return m_nTrack; //拿到你追踪到的是几号}CString GetItemText(int nIndex) const{return m_ds[nIndex]; //拿到的对应的索引来获取文字}CLadderCtrl();CLadderCtrl.cpp int CLadderCtrl::GetIndex(CPoint point) {CClientDC dc(this);dc.SelectStockObject(DEFAULT_GUI_FONT);int i -1, nCount (int)m_ds.GetCount();CRect rect;GetClientRect(rect);CRect rc{ 0,0,0,rect.bottom };while (i nCount){CString str m_ds[i];CSize size dc.GetTextExtent(str);rc.right rc.left size.cx rect.Height();dc.SelectObject(i m_nIndex ? m_brSel : m_br);if (rc.PtInRect(point)){return i;}rc.left rc.right;}return -1; }void CLadderCtrl::OnLButtonDown(UINT nFlags, CPoint point) //和上面算法一致 这个用来算出位置 {int nIndex GetIndex(point);if (nIndex ! m_nIndex) //去除无效点击 {m_nIndex nIndex;Invalidate(FALSE);}CWnd::OnLButtonDown(nFlags, point); }void CLadderCtrl::OnMouseMove(UINT nFlags, CPoint point) {int nIndex GetIndex(point);//if (nIndex m_nIndex) // return;if (m_nTrack!nIndex) {m_nTrack nIndex;Invalidate(FALSE);}CWnd::OnMouseMove(nFlags, point); }附录 CDC::FillSolidRect无边框的纯色填充 GetSysColor获取系统常用的颜色。 GetStockObjectAPI 获取系统预定义对象 CDC::SelectStockObject:选择系统预定义对象。 来自于APIGetStockObjectGDI对象的构造函数CFile的构造函数 a)CPen的构造函数 CPen(int nPenStyle, int nWidth, COLORREF crColor); CPen pen;pen.CreatePen(PS_XXX...); 两句合成一句就是CPen pen(PS_XXX...);b)CBrush的构造函数CBrush(COLORREF crColor); // CreateSolidBrushCBrush(int nIndex, COLORREF crColor); // CreateHatchBrushexplicit CBrush(CBitmap* pBitmap); // CreatePatternBrushMouseMove 进入任意控件都不会理你 除非回到主窗口范围内 OnSetCursor 不论在什么控件都会显示出来 还可以switch getDlgCtrlID 任何控件都会执行
http://www.w-s-a.com/news/923218/

相关文章:

  • 理县网站建设公司郑州仿站定制模板建站
  • 手机网站建设网站报价诸城人才网招聘网
  • 一起做网站怎么下单临沂网站制作
  • 公司网站案例企业网站 模版
  • 做的好的响应式网站有哪些网站界面设计案例
  • 上海创意型网站建设icp备案网站信息
  • 网站没收录中山手机网站制作哪家好
  • 代驾软件开发流程wordpress 博客主题 seo
  • 成都的教育品牌网站建设网站广告js代码添加
  • 网站找人做seo然后网站搜不到了网站建设seoppt
  • 做网站优化有用吗学做文案的网站
  • wordpress 知名网站怎么做微网站
  • 用电脑怎么做原创视频网站河南建设工程信息网一体化平台官网
  • 云服务器和网站空间郑州做招商的网站
  • 规模以上工业企业的标准北京seo结算
  • 软件开发过程模型如何做网站性能优化
  • 网站建站公司广州南京江北新区楼盘
  • 哪些做展架图的网站好开发公司2022年工作计划
  • 磨床 东莞网站建设wordpress下载类主题系统主题
  • 免费学编程网站芜湖做网站都有哪些
  • 能发外链的网站门户网站网页设计规范
  • 网站建设所需人力南城区网站建设公司
  • 网站做图尺寸大小手机模板网站模板下载网站有哪些内容
  • 德阳市建设管理一体化平台网站做美食网站
  • 怎么做自己的推广网站2024年瘟疫大爆发
  • vps正常网站打不开linux网站建设
  • 福州网站快速排名在一个网站的各虚拟目录中默认文档的文件名要相同
  • 网站开发 流程图网站开发用哪个linux
  • 怎么用自己电脑做服务器发布网站吗seo门户网价格是多少钱
  • 备案网站可以做影视站网站400