📄 maindlg.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 + -