AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

在CTreeCtrl中枚举系统中的所有窗口

51自学网 2015-08-30 http://www.wanshiok.com

本文将给出一个源程序,实现在一个对话框中的TreeCtrl中用树的形式枚举窗口。
 
这是头文件 
 
// WinList.h : header file 
// 
 
 
/////////////////////////////////////////////////////////////////////////////
 
// CWinList dialog 
 
class CWinList : public CDialog 

// Construction 
public: 
HWND m_hSelected; 
CWinList(CWnd* pParent = NULL); // standard constructor 
static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam); 
static BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam); 
void BuiltTree(HWND hWnd); 
 
// Dialog Data 
//{{AFX_DATA(CWinList) 
enum { IDD = ID_WINLIST }; 
CTreeCtrl m_Tree; 
//}}AFX_DATA 
 
 
// Overrides 
// ClassWizard generated virtual function overrides 
//{{AFX_VIRTUAL(CWinList) 
public: 
virtual BOOL DestroyWindow(); 
protected: 
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV
support 
//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
void DrawFlash(HWND hWnd); 
void Refresh(); 
 
// Generated message map functions 
//{{AFX_MSG(CWinList) 
virtual BOOL OnInitDialog(); 
afx_msg void OnRefresh(); 
afx_msg void OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult); 
//}}AFX_MSG 
DECLARE_MESSAGE_MAP() 
private: 
CFont TreeFont; 
TV_INSERTSTRUCT TreeItem; 
int RootPt; 
HTREEITEM RootArray[10]; 
}; 
 
 
 
下面是实现文件 
 
// WinList.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "mfc.h" 
#include "WinList.h" 
#include "mfcApi.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
 
/////////////////////////////////////////////////////////////////////////////
 
// CWinList dialog 
 
 
CWinList::CWinList(CWnd* pParent /*=NULL*/) 
: CDialog(CWinList::IDD, pParent) 

//{{AFX_DATA_INIT(CWinList) 
// NOTE: the ClassWizard will add member initialization
here 
//}}AFX_DATA_INIT 

 
 
void CWinList::DoDataExchange(CDataExchange* pDX) 

CDialog::DoDataExchange(pDX); 
//{{AFX_DATA_MAP(CWinList) 
DDX_Control(pDX, IDTREE, m_Tree); 
//}}AFX_DATA_MAP 

 
 
BEGIN_MESSAGE_MAP(CWinList, CDialog) 
//{{AFX_MSG_MAP(CWinList) 
ON_BN_CLICKED(IDREFRESH, OnRefresh) 
ON_NOTIFY(TVN_SELCHANGED, IDTREE, OnSelchangedTree) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
 
/////////////////////////////////////////////////////////////////////////////
 
// CWinList message handlers 
 
static CDWordArray WinArray; 
static unsigned long Level; 
static int Ignore[10]; 
static HWND hPrevWnd; 
 
BOOL CALLBACK CWinList::EnumChildProc(HWND hwnd,LPARAM lParam) 

Ignore[Level]++; 
if (Ignore[Level+1]) Ignore[Level+1]--; 
else 
{ WinArray.Add((unsigned long)((Level<<16)|(unsigned
long)hwnd)); 
Level++;Ignore[Level+1]=0; 
EnumChildWindows(hwnd,EnumChildProc,(long)0); 
Level--; 

 
return TRUE; 
}

<

 

 

 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
上一篇:碎片图像无缝拼合技术的VC++实现  下一篇:DES算法详述