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

📄 maindlg.cpp

📁 自己写的类似,数码相机的主界面.主要实现方法是,使listctrl透明,然后贴上背景图.开发环境,evc+wince sdk
💻 CPP
字号:
// MainDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Main.h"
#include "MainDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMainDlg dialog

CMainDlg::CMainDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMainDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMainDlg)
		// 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);
}

void CMainDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMainDlg)
	DDX_Control(pDX, IDC_EDIT1, mylist);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMainDlg, CDialog)
	//{{AFX_MSG_MAP(CMainDlg)
	ON_NOTIFY(NM_DBLCLK, IDC_EDIT1, OnDblclkEdit1)
	ON_WM_PAINT()
	ON_WM_CTLCOLOR()
	ON_WM_TIMER()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainDlg message handlers

BOOL CMainDlg::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_hBmpBkgnd = ::LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1) );
//	m_hBmpBkgnd.LoadBitmap(IDB_BITMAP2);
	mylist.m_bmp.LoadBitmap(IDB_BITMAP3);
	mylist.MoveWindow(0,27,300,320);

	::SendMessage(mylist.m_hWnd, WM_PAINT, NULL, NULL);
	// TODO: Add extra initialization here
	CMainApp *pApp;
	pApp = (CMainApp*)AfxGetApp();

/*		LVCOLUMN lvColumn;

	CImageList ImgHeaders;//= new CImageList;

	ImgHeaders.Create(16, 16, ILC_MASK, 1, 1);
	ImgHeaders.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
	ImgHeaders.Add(AfxGetApp()->LoadIcon(IDI_ICON2));

	mylist.SetImageList(&ImgHeaders, LVSIL_NORMAL);

//	m_pImageList = new CImageList();
//	m_pImageList.Create(32, 32, TRUE,	4, 4);
/*	m_pImageList.Create(,IDI_ICON1,32, 32, TRUE,	4, 4);

	//加载正常图标
	m_pImageList.Add(pApp->LoadIcon(IDI_ICON1));
	m_pImageList.Add(pApp->LoadIcon(IDI_ICON2));
	m_pImageList.Add(pApp->LoadIcon(IDI_ICON3));
	m_pImageList.Add(pApp->LoadIcon(IDI_ICON4));

	mylist.SetImageList(&m_pImageList, LVSIL_NORMAL);


	lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_IMAGE;
	lvColumn.fmt = LVCFMT_LEFT | LVCFMT_IMAGE;
	lvColumn.cx = 120;
	lvColumn.pszText = _T("Full Name");
	lvColumn.iImage = 0;
	mylist.InsertColumn(0, &lvColumn);

	lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
	lvColumn.fmt = LVCFMT_LEFT;
	lvColumn.cx = 100;
	lvColumn.pszText = _T("Profession");
	mylist.InsertColumn(1, &lvColumn);

	lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_IMAGE;
	lvColumn.fmt = LVCFMT_LEFT | LVCFMT_IMAGE;
	lvColumn.iImage = 1;
	lvColumn.cx = 80;
	lvColumn.pszText = _T("Fav Sport");
	mylist.InsertColumn(2, &lvColumn);

	lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
	lvColumn.fmt = LVCFMT_LEFT;
	lvColumn.cx = 75;
	lvColumn.pszText = _T("Hobby");
	mylist.InsertColumn(3, &lvColumn);*/	

	CRect rect;
	mylist.GetClientRect(&rect);
	int nColInterval = rect.Width()/5;

//	mylist.InsertColumn(0, _T("Item Name"), LVCFMT_LEFT, nColInterval*3);
//	mylist.InsertColumn(1, _T("Value"), LVCFMT_LEFT, nColInterval);
//	mylist.InsertColumn(2, _T("Time"), LVCFMT_LEFT, rect.Width()-4*nColInterval);

	HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 8, 1);
	m_pImageList.Attach(hList);

	// Load the large icons
/*	CBitmap cBmp;
	cBmp.LoadBitmap(IDB_IMAGES_NORMAL);
	m_pImageList.Add(&cBmp, RGB(255,0, 255));
	cBmp.DeleteObject();*/
	m_pImageList.Add(pApp->LoadIcon(IDI_ICON1));
	m_pImageList.Add(pApp->LoadIcon(IDI_ICON2));
	m_pImageList.Add(pApp->LoadIcon(IDI_ICON3));
	m_pImageList.Add(pApp->LoadIcon(IDI_ICON4));

	mylist.ModifyStyle(0, LVS_ICON);
	// Attach them
	mylist.SetImageList(&m_pImageList, LVSIL_NORMAL);
	COLORREF crBkColor = ::GetSysColor(COLOR_3DFACE);


//	mylist.SetBkColor(TRANSPARENT);
//	CPaintDC dc(this);
//	CDC dcMem;
//	dcMem.SelectObject(dc);

//	mylist.SetTextBkColor(TRANSPARENT);
//	mylist.SetTextBkColor(TRANSPARENT);
	mylist.DeleteAllItems();
//	mylist.SetBkColor(CLR_NONE);
	mylist.SetTextBkColor(CLR_NONE);
	// Use the LV_ITEM structure to insert the items
	LVITEM lvi;
	CString strItem;
	for (int i = 0; i < 4; i++)
	{   
		// Insert the first item
		lvi.mask =  LVIF_IMAGE | LVIF_TEXT;
		strItem.Format(_T("Item %i"), i);
	
		lvi.iItem = i;
		lvi.iSubItem = 0;
		lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
		lvi.iImage = i%8;		// There are 8 images in the image list
		mylist.InsertItem(&lvi);
		

		// Set subitem 1
		strItem.Format(_T("%d"), 10*i);
		lvi.iSubItem =1;
		lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
		mylist.SetItem(&lvi);
		

		// Set subitem 2
		strItem.Format(_T("%s"),_T("2"));
		lvi.iSubItem =2;
		lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
		mylist.SetItem(&lvi);

	}
	::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 CMainDlg::OnDblclkEdit1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	

	// If any data in an item is equal to zero then reset it to –1.
/*	for (int i=0;i < mylist.GetItemCount();i++)
	{
	  if (mylist.GetItemData(i) ==1)
	  {
		AfxMessageBox(_T("heleel"));
	  }
	}*/
//得到CListCtrl选中项的索引值 
	  POSITION   pos   =   mylist.GetFirstSelectedItemPosition();   
	  if   (pos   ==   NULL)   
//			TRACE0(_T("No   items   were   selected!\n"));   
//			AfxMessageBox(_T("helll0"));
	  {
	  }
	  else   
	  {   
		 while   (pos)   
		 {   
			int   nItem   =   mylist.GetNextSelectedItem(pos);   
				  //   you   could   do   your   own   processing   on   nItem   here  
				if(nItem==0)
				{
			//		AfxMessageBox(_T("heleel"));
					WinExec(_T("VideoViewer"));
				}
				else if(nItem==3)
				{

				}
		 }   
	  }   
	*pResult = 0;
}


BOOL CMainDlg::WinExec(LPCTSTR FileName)
{
    PROCESS_INFORMATION processInfo; //进程相关信息
    if (!CreateProcess(FileName, NULL, NULL, NULL, NULL
      , CREATE_NEW_CONSOLE
      , NULL, NULL, NULL, &processInfo))
    {
		return false;
	}
    CloseHandle(processInfo.hThread);
	CloseHandle(processInfo.hProcess);
	return true ;
}

void CMainDlg::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_hBmpBkgnd);
		::BitBlt(dc.m_hDC, 0, 0, rect.Width(), rect.Height(), hDC, 0, 0, SRCCOPY);
		::DeleteDC(hDC);
	}

	SetBkMode(dc, TRANSPARENT);
//	SetBkColor (dc, RGB(255,255,0));
	SYSTEMTIME st;
	TCHAR  szText[128];
//	st.wHour=0,st.wMinute=0,st.wSecond=0;
	GetLocalTime (&st);
	
	wsprintf (szText, TEXT ("%d:%02d:%02d"),
				  st.wHour, st.wMinute, st.wSecond);
	ExtTextOut (dc,rect.Width()-50, 0 , 0, NULL,
              szText, lstrlen (szText), NULL);
	SetTimer(1,100,NULL);
	// Do not call CDialog::OnPaint() for painting messages
	MoveToEx(dc,0,0, NULL);
    LineTo(dc, 20, 0) ;
	MoveToEx(dc,20,0,NULL);
	LineTo(dc,20,10);
	MoveToEx(dc,0,10,NULL);
	LineTo(dc,20,10);
	MoveToEx(dc,0,0,NULL);
	LineTo(dc,0,10);

	MoveToEx(dc,20,3,NULL);
	LineTo(dc,24,3);
	MoveToEx(dc,24,3,NULL);
	LineTo(dc,24,7);
	MoveToEx(dc,20,7,NULL);
	LineTo(dc,24,7);

}

HBRUSH CMainDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
//	 COLORREF   clr;   
//	 HBRUSH   m_brMine;       
//	  clr   =   RGB(0,0,255);   
//	  pDC->SetBkColor(clr);           //设置淡蓝色的背景   
    
//	  m_brMine   =   ::CreateSolidBrush(clr);   
//	  return   m_brMine; //返回对应的刷子句柄    
	
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CMainDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	Invalidate(FALSE);
	CDialog::OnTimer(nIDEvent);
}

int CMainDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	SetTimer(1,100,NULL);	
	return 0;
}

⌨️ 快捷键说明

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