📄 testlibview.cpp
字号:
// TestLibView.cpp : implementation of the CTestLibView class
//
#include "stdafx.h"
#include "TestLib.h"
#include "MainFrm.h"
#include "TestLibDoc.h"
#include "TestLibView.h"
#include "tlhelp32.h"
#include "IniFile.h"
#include "PofileDlg.h"
#include "WS1.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTestLibView
IMPLEMENT_DYNCREATE(CTestLibView, CMyView)
BEGIN_MESSAGE_MAP(CTestLibView, CMyView)
//{{AFX_MSG_MAP(CTestLibView)
ON_COMMAND(ID_LOGONPANE, OnLogonpane)
ON_COMMAND(ID_GETMODULEHANDLE, OnGetmodulehandle)
ON_COMMAND(ID_CREATE_PROFILE, OnCreateProfile)
ON_COMMAND(ID_VIEW_PF, OnViewPf)
ON_WM_RBUTTONDOWN()
ON_COMMAND(ID_OPERATE1, OnOperate1)
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CMyView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CMyView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CMyView::OnFilePrintPreview)
// ON_COMMAND(WM_DISPLAY_WNDINFO,DisplayWndInfo)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTestLibView construction/destruction
CTestLibView::CTestLibView()
{
m_pLogoPane = NULL;
m_bLBDown = FALSE;
m_pToolTip = NULL;
}
CTestLibView::~CTestLibView()
{
if(m_pLogoPane!=NULL)
{
delete m_pLogoPane;
m_pLogoPane=NULL;
}
}
BOOL CTestLibView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CMyView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CTestLibView drawing
void CTestLibView::OnDraw(CDC* pDC)
{
CTestLibDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CTestLibView printing
BOOL CTestLibView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CTestLibView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CTestLibView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CTestLibView diagnostics
#ifdef _DEBUG
void CTestLibView::AssertValid() const
{
CMyView::AssertValid();
}
void CTestLibView::Dump(CDumpContext& dc) const
{
CMyView::Dump(dc);
}
CTestLibDoc* CTestLibView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestLibDoc)));
return (CTestLibDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CTestLibView message handlers
void CTestLibView::OnLogonpane()
{
/* if(m_pLogoPane!=NULL)
delete m_pLogoPane;
CWnd* pTempWnd;
CRect rect;
m_pLogoPane=new CCJLogoPane;
pTempWnd=FromHandle(((CMainFrame *)AfxGetMainWnd())->m_hWndMDIClient);
pTempWnd->GetWindowRect(&rect);
rect.DeflateRect(100,190);
m_pLogoPane->Create("LogoPane", WS_OVERLAPPED|WS_VISIBLE,pTempWnd, IDD_DIALOG1);
m_pLogoPane->MoveWindow(&rect);
m_pLogoPane->ShowWindow(SW_SHOW);
*/
}
void CTestLibView::OnGetmodulehandle()
{
HANDLE hSnapshot;
// PROCESSENTRY32 pe;
MODULEENTRY32 me;
BOOL hasInfo;
CDynHelpViewBar* pDynHelpView;
CCJTreeCtrl* pTree;
/*
WCHAR DWORD szTh32ModuleID[]; // 模块号
WCHAR DWORD szTh32ProcessID[]; // 包含本模块的进程号
WCHAR DWORD szGlblcntUsage[]; // 本模块的全局引用计数
WCHAR DWORD szProccntUsage[]; // 包含模块的进程上下文中的模块引用计数
WCHAR BYTE* szModBaseAddr[]; // 模块基地址
WCHAR DWORD szModBaseSize[]; // 模块大小(字节数)
WCHAR HMODULE szHModule[]; // 包含模块的进程上下文中的hModule句柄
WCHAR szModule[MAX_MODULE_NAME32 + 1]; //模块名
WCHAR szExePath[MAX_PATH]; //模块对应的文件名和路径
*/
pDynHelpView=&(((CMainFrame *)AfxGetMainWnd())->m_wndDynHelpView);
pTree=&(pDynHelpView->m_wndArticles);
HTREEITEM hTreeItem = pTree->InsertItem (_T("当前模块信息"),0, 2, NULL);
pTree->SetItemData (hTreeItem, (DWORD) 1);
hSnapshot =CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,0);
me.dwSize =sizeof(MODULEENTRY32);
hasInfo =Module32First(hSnapshot,&me);
while(hasInfo==TRUE)
{
pTree->InsertItem (_T("模块名称"), 5, 5, hTreeItem);
pTree->SetItemData (hTreeItem, (DWORD) 2);
pTree->InsertItem (_T("模块名称文件名"), 1, 3, NULL);
pTree->SetItemData (hTreeItem, (DWORD) 2);
pTree->InsertItem (_T("模块实例句柄"),
5, 5, hTreeItem);
pTree->SetItemData (hTreeItem, (DWORD) 2);
hasInfo =Module32Next(hSnapshot,&me);
}
CloseHandle(hSnapshot);
}
void CTestLibView::OnCreateProfile()
{
CIniFile pf;
CString Path="F:\\";
CString Name="profile";
CString Section;
CString Item;
int Value=7;
int i;
CString* strValue;
pf.SetPath(Path);
pf.SetName(Name);
pf.OpenIniFileForWrite();
Section="模块信息";
pf.WriteSection(Section);
Item="模块数目";
pf.WriteItemInt(Item,Value);
Item="模块列表";
pf.WriteItemString(Item,"");
strValue=new CString[Value];
strValue[0]="影像库 GeoImageDBforGeostar.dll 无文档模板";
strValue[1]="透明图象 GeoPhoto.dll 无文档模板";
strValue[2]="空间分析 GeoAnalysis.dll 无文档模板";
strValue[3]="普通图制图 GeoDecorate.dll 无文档模板";
strValue[4]="专题制图 GeoTheme.dll 无文档模板";
strValue[5]="图形编辑 GeoEdit.dll 无文档模板";
strValue[6]="图板数字化 GeoDigitizing.dll 无文档模板";
for(i=0;i<7;i++)
{
Item.Format("模块%d",i+1);
pf.WriteItemString(Item,strValue[i]);
}
Section="当前模块使用情况";
pf.WriteSection(Section);
pf.CloseIniFile();
}
void CTestLibView::OnViewPf()
{
CPofileDlg pfDlg;
pfDlg.DoModal();
}
void CTestLibView::OnRButtonDown(UINT nFlags, CPoint point)
{
CDC* pDC=GetDC();
CWS1* pWS1;
pDC->TextOut(100,100,"现在正在处理...");
pWS1=(CWS1 *)((((CMainFrame *)AfxGetMainWnd())->m_wndWorkspace).GetView(0));
pWS1->ExecuteMenu(pWS1->m_curDType,this);
CMyView::OnRButtonDown(nFlags, point);
}
void CTestLibView::OnOperate1()
{
m_bLBDown=TRUE;
}
void CTestLibView::OnLButtonDown(UINT nFlags, CPoint point)
{
// if(m_bLBDown==FALSE)
// return;
CMyView::OnLButtonDown(nFlags, point);
}
void CTestLibView::OnInitialUpdate()
{
CMyView::OnInitialUpdate();
CMainFrame* pMainFrm=(CMainFrame *)AfxGetMainWnd();
m_pToolTip=&(pMainFrm->m_toolTip);
m_pToolTip->AddTool(this,
_T("主视图\r显示区域\n供其他界面参照"));
}
BOOL CTestLibView::PreTranslateMessage(MSG* pMsg)
{
m_pToolTip->RelayEvent(pMsg);
return CMyView::PreTranslateMessage(pMsg);
}
void CTestLibView::OnMyDraw(CDC* pDC)
{
SendMessage(MYWM_DRAW,(WPARAM)this);
m_bNeedUpdate = FALSE;
}
void CTestLibView::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
CBrush br;
CBrush *oldBr;
br.CreateSolidBrush(RGB(255,255,255));
GetClientRect(&rect);
oldBr=dc.SelectObject(&br);
dc.FillRect(&rect,&br);
dc.SelectObject(oldBr);
OnMyDraw(&dc);
}
LRESULT CTestLibView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
return CMyView::WindowProc(message, wParam, lParam);
}
void CTestLibView::DisplayWndInfo()
{
CDC* pDC=GetDC();
CMainFrame* pMainFrm=(CMainFrame *)AfxGetMainWnd();
if(pMainFrm->m_szWindowCaption.GetLength()>0)
pDC->TextOut(100,10,pMainFrm->m_szWindowCaption);
if(pMainFrm->m_szWindowClassName.GetLength()>0)
pDC->TextOut(100,40,pMainFrm->m_szWindowClassName);
if(pMainFrm->m_cszhWnd.GetLength()>0)
pDC->TextOut(100,70,pMainFrm->m_cszhWnd);
if(pMainFrm->m_cszATOM.GetLength()>0)
pDC->TextOut(100,100,pMainFrm->m_cszATOM);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -