找传奇、传世资源到传世资源站!

c++ 按钮图片控件

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

通过 buttondown  buttonup  模拟按钮 并封装贴图类c++ 按钮图片控件 C/C++语言基础-第1张
from clipboard
// ImgWnd.cpp : implementation file//#include "stdafx.h"#include "test1.h"#include "ImgWnd.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CImgWnd#pragma comment(lib, "msimg32.lib")CImgWnd::CImgWnd(){bMyWork=0;}CImgWnd::~CImgWnd(){}BEGIN_MESSAGE_MAP(CImgWnd, CStatic)//{{AFX_MSG_MAP(CImgWnd)ON_WM_PAINT()//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CImgWnd message handlersvoid CImgWnd::LoadImage(UINT One, UINT Two,UINT Three){m_bmpOne.LoadBitmap(One);m_bmpTwo.LoadBitmap(Two);m_bmpThree.LoadBitmap(Three);}void CImgWnd::SelectImage(int bWork){bMyWork=bWork;Draw();//Invalidate();}void CImgWnd::OnPaint() {CPaintDC dc(this); // device context for painting// TODO: Add your message handler code here//获得窗口大小CRect r;GetClientRect(&r);//将位图选进设备场景中CDC memdc;memdc.CreateCompatibleDC( &dc );CBitmap* pOldBmp;if(bMyWork==0){pOldBmp= memdc.SelectObject(&m_bmpOne);BITMAP bmp;m_bmpOne.GetBitmap(&bmp);TransparentBlt(dc,r.left ,r.top ,bmp.bmWidth,bmp.bmHeight,memdc,0 ,0,bmp.bmWidth,bmp.bmHeight,RGB(255,0,0));}else if(bMyWork==1){pOldBmp= memdc.SelectObject(&m_bmpTwo);BITMAP bmp;m_bmpTwo.GetBitmap(&bmp);TransparentBlt(dc,r.left ,r.top ,bmp.bmWidth,bmp.bmHeight,memdc,0 ,0,bmp.bmWidth,bmp.bmHeight,RGB(255,0,0));}else{pOldBmp= memdc.SelectObject(&m_bmpThree);BITMAP bmp;m_bmpThree.GetBitmap(&bmp);TransparentBlt(dc,r.left ,r.top ,bmp.bmWidth,bmp.bmHeight,memdc,0 ,0,bmp.bmWidth,bmp.bmHeight,RGB(255,0,0));}//还原memdc.SelectObject(pOldBmp);}void CImgWnd::Draw(){CClientDC dc(this); // device context for painting// TODO: Add your message handler code here//获得窗口大小CRect r;GetClientRect(&r);//将位图选进设备场景中CDC memdc;memdc.CreateCompatibleDC( &dc );CBitmap* pOldBmp;if(bMyWork==0){pOldBmp= memdc.SelectObject(&m_bmpOne);BITMAP bmp;if (pOldBmp!=NULL){m_bmpOne.GetBitmap(&bmp);TransparentBlt(dc,r.left ,r.top ,bmp.bmWidth,bmp.bmHeight,memdc,0 ,0,bmp.bmWidth,bmp.bmHeight,RGB(255,0,0));}}else if(bMyWork==1){pOldBmp= memdc.SelectObject(&m_bmpTwo);BITMAP bmp;if (pOldBmp!=NULL){m_bmpTwo.GetBitmap(&bmp);TransparentBlt(dc,r.left ,r.top ,bmp.bmWidth,bmp.bmHeight,memdc,0 ,0,bmp.bmWidth,bmp.bmHeight,RGB(255,0,0));}}else{pOldBmp= memdc.SelectObject(&m_bmpThree);BITMAP bmp;if (pOldBmp!=NULL){m_bmpThree.GetBitmap(&bmp);TransparentBlt(dc,r.left ,r.top ,bmp.bmWidth,bmp.bmHeight,memdc,0 ,0,bmp.bmWidth,bmp.bmHeight,RGB(255,0,0));}}//还原memdc.SelectObject(pOldBmp);}

// test1Dlg.cpp : implementation file//#include "stdafx.h"#include "test1.h"#include "test1Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CTest1Dlg dialogCTest1Dlg::CTest1Dlg(CWnd* pParent /*=NULL*/): CDialog(CTest1Dlg::IDD, pParent){//{{AFX_DATA_INIT(CTest1Dlg)// NOTE: the ClassWizard will add member initialization here//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CTest1Dlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CTest1Dlg)DDX_Control(pDX, IDC_ORIG, m_orig); DDX_Control(pDX, IDC_ORIG1, m_orig1);// NOTE: the ClassWizard will add DDX and DDV calls here//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CTest1Dlg, CDialog)//{{AFX_MSG_MAP(CTest1Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CTest1Dlg message handlersBOOL CTest1Dlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);// Set big iconSetIcon(m_hIcon, FALSE);// Set small icon// TODO: Add extra initialization herem_orig.LoadImage(IDB_BITMAP2,IDB_BITMAP2,IDB_BITMAP1); m_orig1.LoadImage(IDB_BITMAP1,IDB_BITMAP1,IDB_BITMAP2);m_orig.SelectImage(2);m_orig1.SelectImage(2);return TRUE; // return TRUE unless you set the focus to a control}void CTest1Dlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CTest1Dlg::OnPaint() {if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint 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 icondc.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 CTest1Dlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CTest1Dlg::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultCRect rect;m_orig.GetWindowRect(rect);ScreenToClient(&rect);if (point.x>rect.left&&point.x<rect.right&&point.y>rect.top&&point.y<rect.bottom){m_orig.SelectImage(0);MessageBox("恩恩你成功了!!!!!!");// m_dataarms.laser_stop = 1; //发送数值为// m_socket.SendTo(&m_dataarms,sizeof(DATAARMS_LEFT),6000,"192.168.0.255");//发送数值到 return;}m_orig1.GetWindowRect(rect);ScreenToClient(&rect);if (point.x>rect.left&&point.x<rect.right&&point.y>rect.top&&point.y<rect.bottom){m_orig1.SelectImage(0);MessageBox("呦不错呦!!!!!!");// m_dataarms.laser_stop = 1; //发送数值为// m_socket.SendTo(&m_dataarms,sizeof(DATAARMS_LEFT),6000,"192.168.0.255");//发送数值到 return;}CDialog::OnLButtonDown(nFlags, point);}void CTest1Dlg::OnLButtonUp(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultm_orig.SelectImage(2);m_orig1.SelectImage(2);CDialog::OnLButtonUp(nFlags, point);}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复