//多色窗口设置
单文档+C^View的定制
#define RED RGB(255, 0, 0)
#define GREEN RGB(0, 255, 0)
#define BLUE RGB(0, 0, 255)
#define BLACK RGB(0, 0, 0)
void CMutiColorWindowsView::OnDraw(CDC* pDC)
{
CMutiColorWindowsDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CRect r;
// TODO: 在此处为本机数据添加绘制代码
GetClientRect(r);
if(r.right>750 && r.right<1000 || r.bottom>750 && r.bottom<1000)
pDC->FillSolidRect(r, RED);
else if(r.right>500 && r.right<750 || r.bottom>500 && r.bottom<750)
pDC->FillSolidRect(r, GREEN);
else if(r.right<500 || r.bottom<500)
pDC->FillSolidRect(r, BLUE);
else
pDC->FillSolidRect(r, BLACK);
}
————————————————————————————————————————————————————————————————
//不规则窗口建立
CRgn m_rgn;
BOOL CunRegularWindowsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
……
// TODO: 在此添加额外的初始化代码
CRect rcDialog;
GetClientRect(rcDialog);
m_rgn.CreateEllipticRgn(rcDialog.left, rcDialog.top, rcDialog.Width(),
rcDialog.Height());
SetWindowRgn((HRGN)m_rgn, TRUE);
m_rgn.DeleteObject();
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
——————————————————————————————————————————————————————————————————
//显示运行进程
CListCtrl m_listProcess;
CImageList m_imgSmall;
BOOL CEnumProcessDlg::OnInitDialog()
{
……
// TODO: 在此添加额外的初始化代码
m_imgSmall.Create(16, 16, ILC_MASK | ILC_COLORDDB, 1, 100);
m_listProcess.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_listProcess.SetBkColor(RGB(247,247,255));
m_listProcess.SetTextColor(RGB(0,0,255));
m_listProcess.SetTextBkColor(RGB(247,247,255));
m_listProcess.InsertColumn(0, L"Process File Name", LVCFMT_LEFT, 250, 0);
m_listProcess.InsertColumn(1, L"Process ID", LVCFMT_CENTER, 100, 1);
m_listProcess.InsertColumn(2, L"Parent ProID", LVCFMT_CENTER, 100, 2);
}
void CEnumProcessDlg::OnBnClickedButtonCatch()
{
// TODO: 在此添加控件通知处理程序代码
// m_listProcess.InsertItem(0,L"01");
// m_listProcess.SetItemText(0, 1, L"chetnao");
// m_listProcess.SetItemText(0, 2, L"921984");
//
// m_listProcess.InsertItem(1,L"02");
// m_listProcess.SetItemText(1,1,L"mada");
// m_listProcess.SetItemText(1,2,L"345678");
//
// m_listProcess.InsertItem(2,L"03");
// m_listProcess.SetItemText(2,1,L"luoxian");
// m_listProcess.SetItemText(2,2,L"987654");
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(snapshot == NULL) return;
m_listProcess.SetRedraw(FALSE);
PROCESSENTRY32 processinfo;
MODULEENTRY32 moduleinfo;
processinfo.dwSize = sizeof(processinfo);
BOOL status = Process32First(snapshot, &processinfo);
Module32First(snapshot, &moduleinfo);
SHFILEINFO shSmall;
CString str;
int indexImage;
m_listProcess.SetImageList(&m_imgSmall, LVSIL_SMALL);
while(status) {
ZeroMemory(&shSmall, sizeof(shSmall));
SHGetFileInfo(moduleinfo.szExePath,
0, &shSmall,
sizeof(shSmall),
SHGFI_ICON |
SHGFI_SMALLICON);
indexImage = m_imgSmall.Add(shSmall.hIcon); //MODULEENTRY32 可以提供程序的Path但是会出现乱码
//PROCESSENTRY32 只能提供filename,在ProcessID与ParentProcessID起着重要作用
int nCount = m_listProcess.GetItemCount();
m_listProcess.InsertItem(nCount, processinfo.szExeFile, indexImage);
str.Format(L"%d", processinfo.th32ProcessID);
m_listProcess.SetItemText(nCount, 1, str);
str.Format(L"%d", processinfo.th32ParentProcessID);
m_listProcess.SetItemText(nCount, 2, str);
status = Process32Next(snapshot, &processinfo);
Module32Next(snapshot, &moduleinfo);
}//while
m_listProcess.SetRedraw(TRUE);
}
// typedef struct tagPROCESSENTRY32 {
// DWORD dwSize;
// DWORD cntUsage;
// DWORD th32ProcessID;
// ULONG_PTR th32DefaultHeapID;
// DWORD th32ModuleID;
// DWORD cntThreads;
// DWORD th32ParentProcessID;
// LONG pcPriClassBase;
// DWORD dwFlags;
// TCHAR szExeFile[MAX_PATH];
// } PROCESSENTRY32, *PPROCESSENTRY32;
// typedef struct _SHFILEINFO {
// HICON hIcon;
// int iIcon;
// DWORD dwAttributes;
// TCHAR szDisplayName[MAX_PATH];
// TCHAR szTypeName[80];
// } SHFILEINFO;
————————————————————————————————————————————————————————————————
设置图标与位图
void CStaticTextDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CStatic *pStatic1 = (CStatic*) GetDlgItem(IDC_STATIC1);
pStatic1->SetWindowText("");
pStatic1->ModifyStyle(0x0, SS_ICON | SS_CENTERIMAGE);
pStatic1->SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
}
void CEx5Dlg::OnButton3()
{
// TODO: Add your control notification handler code here
CStatic *pStatic3=(CStatic*)GetDlgItem(IDC_STATIC3);
pStatic3->SetWindowText("");
pStatic3->ModifyStyle(0x0,SS_BITMAP|SS_CENTERIMAGE);
pStatic3->SetBitmap(::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1)));
}
posted on 2010-12-26 22:36
xiwrong 阅读(325)
评论(0) 编辑 收藏 引用