您的位置:逆风者 VC++ 正文
原作者:南京 宋陈三 添加时间:2007-09-08 原文发表:2007-09-08 人气:688 来源:vckbase.com

本文章共8424字,分5页,当前第3页,快速翻页:
 

  四、常规标签页
  常规标签页负责显示窗口句柄、窗口类名、标题文本、窗口矩形、窗口ID、进程ID和程序路径。控制其显示或改变应在CMyPic的WM_LBUTTONUP响应函函数中进行。代码如下:

逆@风@者
((CPage0*)FromHandle(g_hPage0))->m_editHWND.SetWindowText(Display((int)g_hWnd));
char strClass[200]="\0";
::GetClassName(g_hWnd,strClass,200);
((CPage0*)FromHandle(g_hPage0))->m_editCLASS.SetWindowText(strClass);
((CPage2*)FromHandle(g_hPage2))->SetDlgItemText(IDC_EDITCLASSNAME,strClass);<
        
char strTitle[200]="\0";
 ::GetWindowText(g_hWnd,strTitle,200);
((CPage0*)FromHandle(g_hPage0))->m_editTITLE.SetWindowText (strTitle);
long iWNDID=GetWindowLong(g_hWnd,GWL_ID);
((CPage0*)FromHandle(g_hPage0))->m_editWNDID.SetWindowText(Display((int)iWNDID));
       
unsigned long iPID=0;
GetWindowThreadProcessId(g_hWnd,&iPID);
((CPage0*)FromHandle(g_hPage0))->m_editPID.SetWindowText(Display((int)iPID));
        
CString strPath;
strPath=getProcPath(iPID);
((CPage0*)FromHandle(g_hPage0))->m_editPATH.SetWindowText(strPath);
        
RECT rc;
::GetWindowRect(g_hWnd, &rc); //获得窗口矩形
CString strRect;
strRect.Format("(%d,%d),(%d,%d) %dx%d",rc.left,rc.top,rc.right,rc.bottom,
rc.right-rc.left,rc.bottom-rc.top);
((CPage0*)FromHandle(g_hPage0))->m_editRECT.SetWindowText(strRect);

  其中,getProcPath是获取进程文件路径的函数。获取进程路径的方法有两种。在NT系统中,我们可以用OpenProcess()函数将进程打开后,再利用EnumProcessModules()函数枚举该进程的模块,最后利用GetModuleFileNameEx()函数就能取得该进程的路径;第二种方法是利用ToolHelp API中的相关函数。而后者兼容容Windows9x和NT4.0以后系统,所以采取此法。它的实现代码如下:

CString getProcPath(int PID)
{
    HANDLE hModule;
    MODULEENTRY32* minfo=new MODULEENTRY32;
    minfo->dwSize=sizeof(MODULEENTRY32);
    hModule=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,PID); Module32First(hModule,minfo);
    CString str;
    str.Format("%s",minfo->szExePath);
    CloseHandle(hModule);
    if(minfo) delete minfo;
    return str;	
}

  

  五、样式标签页
  样式标签页设计如下图:

  

  API函数GetWindowLong可以获取窗口样式或扩展样式的值。然后我们罗列出以WS_开头的所有窗口样式与上述样式值做"位与"操作,如果被包含,则返回其窗口样式,否则返回0。这样,就可以得到窗口样式的列表了。扩展样式列表与样式列表类似。相关代码如下:

CListBox* pListStyle=(CListBox*)(((CPage1*)FromHandle(g_hPage1))->GetDlgItem(IDC_LIST_STYLE));
CListBox* pListExStyle=(CListBox*)(((CPage1*)FromHandle(g_hPage1))->GetDlgItem(IDC_LIST_EX_STYLE));
CEdit* pEditStyle=(CEdit*)(((CPage1*)FromHandle(g_hPage1))->GetDlgItem(IDC_EDIT_STYLE));
CEdit* pEditExStyle=(CEdit*)(((CPage1*)FromHandle(g_hPage1))->GetDlgItem(IDC_EDIT_EX_STYLE));
long style = GetWindowLong(g_hWnd, GWL_STYLE);
long styleEx= GetWindowLong(g_hWnd, GWL_EXSTYLE);
pEditStyle->SetWindowText(Display((int)style));
pEditExStyle->SetWindowText(Display((int)styleEx));
pListStyle->ResetContent(); //清空样式列表框
pListExStyle->ResetContent(); //清空扩展样式列表框
if (style & WS_BORDER)
    pListStyle->AddString("WS_BORDER");
if( style & WS_CAPTION)
    pListStyle->AddString("WS_CAPTION");
if( style & WS_CHILD)
    pListStyle->AddString("WS_CHILD");
    ……
 
本文章更多内容<<上一页 - 1 - 2 - 3 - 4 - 5 - 下一页>>
相关文章

汉诺塔游戏的设计
关于控件注册和使用许可问题的解决办法
基于MFC对话框的NT服务程序框架
计算MDI子窗口数,仅显示文件夹的打开对话框
PE文件格式详解(下)
GDI和GDI 对象的相互转换
软件框架的利器、TangramMini组件应用教程二
C语言高效编程的几招
VC 操作 SQL Server 主从表
软件测试悖论
WIN32程序挂钩SetLastError,输出错误描述到
超强仿QQ自动伸缩窗口
VC实用小知识总结 (一)
VC实用小知识总结 (二)
BMP图象解析
让你的软件界面更漂亮(五)
MFC中基于对话框程序快捷键的实现
用递归的方法画分形图
利用IJG JPEG Library压缩图像为jpg格式
软件框架的利器、TangramMini组件应用教程六

相关评论


本文章所属分类:首页 VC++

  热门关键字: