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

📄 testmenudlg.cpp

📁 自己编写的,类似数码相机一样的菜单,开发环境是用evc和wince sdk.
💻 CPP
字号:
// testmenuDlg.cpp : implementation file
//

#include "stdafx.h"
#include "testmenu.h"
#include "testmenuDlg.h"
#include "testdlg1.h"
#include "testdlg2.h"
#include "testdlg3.h"
#include "testdlg4.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTestmenuDlg dialog

CTestmenuDlg::CTestmenuDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestmenuDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestmenuDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	z=24;
	l=50;
	z1=24;
	l1=50;
}

void CTestmenuDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestmenuDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTestmenuDlg, CDialog)
	//{{AFX_MSG_MAP(CTestmenuDlg)
	ON_WM_PAINT()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestmenuDlg message handlers

BOOL CTestmenuDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen
	m_hBmpBkgnd1 = ::LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2) );
	m_hBmpBkgnd = ::LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP4) );
	m_hBmpBkgnd2 = ::LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP5) );
	m_hBmpBkgnd3 = ::LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP6) );
	// TODO: Add extra initialization here
	::SetWindowPos(this->m_hWnd, HWND_NOTOPMOST, 0, 0, 240,320, SWP_NOOWNERZORDER|SWP_SHOWWINDOW);	
	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CTestmenuDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	CRect rect;
	GetClientRect(&rect);
	BITMAP bmp;

	::GetObject(m_hBmpBkgnd, sizeof(bmp), &bmp);
	HDC hDC = ::CreateCompatibleDC(NULL);
	if(hDC != NULL)
	{
		::SelectObject(hDC, m_hBmpBkgnd1);
		::BitBlt(dc.m_hDC, 0, 0, rect.Width(), rect.Height(), hDC, 0, 0, SRCCOPY);

		::SelectObject(hDC, m_hBmpBkgnd);
		::BitBlt(dc.m_hDC, 0, 24, rect.Width(), rect.Height(), hDC, 0, 0, SRCCOPY);
		::DeleteDC(hDC);

	}
	SetBkMode(dc, TRANSPARENT);

	TCHAR  szText[128];
	SetBkMode(dc, TRANSPARENT);
	DrawInputText2(&dc);
	DrawInputText(&dc);
	wsprintf (szText, TEXT ("Time"));
	ExtTextOut (dc,40, 30 , 0, NULL,
              szText, lstrlen (szText), NULL);

	wsprintf (szText, TEXT ("Picture"));
	ExtTextOut (dc,40, 60 , 0, NULL,
              szText, lstrlen (szText), NULL);

	wsprintf (szText, TEXT ("Video"));
	ExtTextOut (dc,40, 90 , 0, NULL,
              szText, lstrlen (szText), NULL);

	wsprintf (szText, TEXT ("Edtions"));
	ExtTextOut (dc,40, 120 , 0, NULL,
              szText, lstrlen (szText), NULL);
	// Do not call CDialog::OnPaint() for painting messages
}

void CTestmenuDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CClientDC dc (this);
	CRect rect;
	GetClientRect(&rect);
	BITMAP bmp;
	::GetObject(m_hBmpBkgnd, sizeof(bmp), &bmp);
	HDC hDC = ::CreateCompatibleDC(NULL);
	if(point.y>24&&point.y<50)
	{
		z=24,l=50;
	}
	else if(point.y>50&&point.y<76)
	{
		z=54,l=80;
	}
	else if(point.y>76&&point.y<102)
	{
		z=84,l=110;
	}
	else if(point.y>102&&point.y<128)
	{
		z=114,l=140;
	}
	else if(point.y>128&&point.y<154)
	{
		z=144,l=170;
	}
	if(z1==z)
	{
	}
	else
	{
		
		DrawInputText2(&dc);
		CRect rect(0,z1,240,l1);
		InvalidateRect(rect,TRUE);
		z1=z,l1=l;
		DrawInputText(&dc);
	}

	CDialog::OnMouseMove(nFlags, point);
}

void CTestmenuDlg::DrawInputText (CDC *pDC)
{

	CBrush brush (RGB (255, 255, 0));

	pDC->SetBkMode(TRANSPARENT);

	TCHAR  szText[128];
    CBrush* pOldBrush = pDC->SelectObject (&brush);
	pDC->Rectangle(0, z,240, l);
	pDC->SelectObject(pOldBrush);



	wsprintf (szText, TEXT ("Time"));
	pDC->ExtTextOut(40, 30 , 0, NULL,
              szText, lstrlen (szText), NULL);

	wsprintf (szText, TEXT ("Picture"));
	pDC->ExtTextOut(40, 60 , 0, NULL,
	          szText, lstrlen (szText), NULL);

	wsprintf (szText, TEXT ("Video"));
	pDC->ExtTextOut(40, 90 , 0, NULL,
              szText, lstrlen (szText), NULL);

	wsprintf (szText, TEXT ("Edtions"));
	pDC->ExtTextOut(40, 120 , 0, NULL,
              szText, lstrlen (szText), NULL);

	wsprintf (szText, TEXT ("Exit"));
	pDC->ExtTextOut(40, 150,  0, NULL,
			  szText, lstrlen (szText), NULL);
	
}

void CTestmenuDlg::DrawInputText2 (CDC *pDC)
{

	CBrush brush (RGB (255, 0, 255));
	pDC->SetBkMode(TRANSPARENT);
	TCHAR  szText[128];
    CBrush* pOldBrush = pDC->SelectObject (&brush);
	pDC->SetBkColor(TRANSPARENT);
	CRect rect(0,z1,240,l1);
	pDC->SelectObject(pOldBrush);

/*		  LOGBRUSH   LogBrush;   
	  LogBrush.lbColor=RGB(255,   255,   0);   
	  LogBrush.lbStyle=BS_NULL;   
	  int   iRop2=pDC->SetROP2(R2_XORPEN);   
	  CBrush   brush;   
	  brush.CreateBrushIndirect(&LogBrush);   
	  CBrush*   pOldBrush   =   pDC->SelectObject(&brush); 
	  pDC->SelectObject(&brush); 
	  CPen   pen(PS_SOLID,1,RGB(0,255,0));   
	  CPen     *pPen=pDC->SelectObject(&pen);   
	  pDC->Rectangle(0,z,240,l);     
//	  pDC->Rectangle(0,z,240,l);//试一下注释掉这句话和不注释的区别   
	  pDC->SelectObject(pPen);   
    
	  pDC->SetROP2(iRop2);   
	  pDC->SelectObject(pOldBrush);*/

/*	     
	  pDC->SelectObject(pOldBrush); */   

	if(z1==24)
	{
	wsprintf (szText, TEXT ("Time"));
	pDC->ExtTextOut(40, 30 , 0, NULL,
              szText, lstrlen (szText), NULL);
	}
	else if(z1==54)
	{

	wsprintf (szText, TEXT ("Picture"));
	pDC->ExtTextOut(40, 60 , 0, NULL,
	          szText, lstrlen (szText), NULL);
	}
	else if(z1==84)
	{

	wsprintf (szText, TEXT ("Video"));
	pDC->ExtTextOut(40, 90 , 0, NULL,
              szText, lstrlen (szText), NULL);
	}
	else if(z1==114)
	{

	wsprintf (szText, TEXT ("Edtions"));
	pDC->ExtTextOut(40, 120 , 0, NULL,
              szText, lstrlen (szText), NULL);
	}
	else if(z1==144)
	{
	wsprintf (szText, TEXT ("Exit"));
	pDC->ExtTextOut(40, 150,  0, NULL,
			  szText, lstrlen (szText), NULL);
	}
}

void CTestmenuDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(point.y>24&&point.y<50)
	{
		testdlg1 test1;
		test1.DoModal();
	}
	else if(point.y>50&&point.y<76)
	{
		testdlg2 test2;
		test2.DoModal();
	}
	else if(point.y>76&&point.y<102)
	{
		testdlg3 test3;
		test3.DoModal();
	}
	else if(point.y>102&&point.y<128)
	{
		testdlg4 test4;
		test4.DoModal();
	}
	else if(point.y>128&&point.y<154)
	{

	}
	
	CDialog::OnLButtonDown(nFlags, point);
}

⌨️ 快捷键说明

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