WEB开发网
开发学院软件开发VC Spy++原理初探 阅读

Spy++原理初探

 2010-07-20 20:46:04 来源:WEB开发网   
核心提示:八、消息标签页消息标签页的设计如下图:该页中的列表框与样式列表框不同,它的每个列表项前都有一个复选框,Spy++原理初探(8),这要用到类CCheckListBox,这里要再次用到子类化的知识,哪些列表项被勾选,这个判断过程与样式列表的实现类似,从本文第一段制作CMyPric过程中,我们体会到了子类化的作用

八、消息标签页

消息标签页的设计如下图:

该页中的列表框与样式列表框不同,它的每个列表项前都有一个复选框。这要用到类CCheckListBox。这里要再次用到子类化的知识。从本文第一段制作CMyPric过程中,我们体会到了子类化的作用,也感到了它的不便之处。这里,我们采取另外一种方法,借鸡生蛋:即用Class Wizard生成相关代码,然后再修改它。首先在该属性页对话框上画一个列表控件,打开Class Wizard关联一个CListBox类变量m_listStatus。设置列表框的Owner Draw属性为Fixed,并选中其Has Strings选项。如下图:

    

然后,在Page4.h中查找到m_listStatus的定义 CListBox m_listStatus并将其改为CCheckListBox m_listStatus。这样,我们就可以使用CCheckListBox的全部函数了。

在对话框初始化过程中添加下列语句以加入各列表项:

CCheckListBox* plistStatus=((CCheckListBox*)FromHandle(g_hPage4)->GetDlgItem(IDC_LISTSTATUS));
plistStatus->AddString("窗口可见");
plistStatus->AddString("窗口可用");
plistStatus->AddString("总在最前");
plistStatus->AddString("窗口只读");
plistStatus->AddString("最大化");
plistStatus->AddString("最小化");
plistStatus->AddString("窗口还原");
plistStatus->AddString("关闭窗口");
plistStatus->AddString("激活窗口");

接下来我们要判断,当窗口/控件被选定后,哪些列表项被勾选。这个判断过程与样式列表的实现类似。如第一项"窗口可见",代码如下:

long style = GetWindowLong(g_hWnd, GWL_STYLE);
if( style & WS_VISIBLE )
{
  pListStatus->SetCheck(0,1);
}

上一页  3 4 5 6 7 8 9  下一页

Tags:Spy 原理 初探

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接