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

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

  

  六、类标签页
  类标签页的设计如下图:

  
逆风者

  类名在常规标签页已获取。API函数GetClassLong可以获取类样式值。样式列表的实现与窗口样式类似,不再赘述。
  

  七、窗口标签页
  窗口标签页的设计如下图:

  

  在该页中,主要用到了下面几个API函数:GetNextWindow、GetWindow和SendMessage。这三个API函数搭配以不同的参数值可以实现不同的功能。这里没有用GetWIndowText函数,是因为它不能取出部分系统窗口和隐藏窗口的标题。我们用SendMessage函数加WM_GETTEXT参数取代之。代码如下:

CPage3* pPage3=(CPage3*)FromHandle(g_hPage3);
HWND tempHandle;
char tempstr[255]="\0";
tempHandle = g_hWnd; //本窗口句柄
pPage3->SetDlgItemText(IDC_MYHWND, Display((int)tempHandle));
//获取本窗口标题
::SendMessage(tempHandle, WM_GETTEXT, 255, (LPARAM)tempstr);
pPage3->SetDlgItemText(IDC_MYTITLE, tempstr);
//上一窗口
tempHandle = ::GetNextWindow(g_hWnd, GW_HWNDPREV); 
pPage3->SetDlgItemText(IDC_PREHWND, Display((int)tempHandle));
//获取上一窗口标题
memset(tempstr,0,255);
::SendMessage(tempHandle, WM_GETTEXT, 255, (LPARAM)tempstr);
pPage3->SetDlgItemText(IDC_PRETITLE, tempstr);
//下一窗口
tempHandle = ::GetNextWindow(g_hWnd, GW_HWNDNEXT); 
pPage3->SetDlgItemText(IDC_NEXTHWND,Display((int)tempHandle));
memset(tempstr,0,255); //获取下一窗口标题
::SendMessage(tempHandle, WM_GETTEXT, 255, (LPARAM)tempstr);
pPage3->SetDlgItemText(IDC_NEXTTITLE, tempstr);
        
tempHandle = ::GetParent(g_hWnd); //父窗口
pPage3->SetDlgItemText(IDC_PARENTHWND, Display((int)tempHandle));
memset(tempstr,0,255);
::SendMessage(tempHandle, WM_GETTEXT, 255, (LPARAM)tempstr);
pPage3->SetDlgItemText(IDC_PARENTTITLE,tempstr);
//第一子窗口
tempHandle = ::GetWindow(g_hWnd, GW_CHILD); 
pPage3->SetDlgItemText(IDC_CHILDHWND,Display((int)tempHandle));
memset(tempstr,-0,255);
::SendMessage(tempHandle, WM_GETTEXT, 255, (LPARAM)tempstr);
pPage3->SetDlgItemText(IDC_CHILDTITLE,tempstr);
//所有者窗口
tempHandle = ::GetWindow(g_hWnd, GW_OWNER); 
Page3->SetDlgItemText(IDC_OWNERHWND,Display((int)tempHandle));
memset(tempstr,0,255);
::SendMessage(tempHandle, WM_GETTEXT, 255, (LPARAM)tempstr);
pPage3->SetDlgItemText(IDC_OWNERTITLE, tempstr);

  

  八、消息标签页

  
  消息标签页的设计如下图:
该页中的列表框与样式列表框不同,它的每个列表项前都有一个复选框。这要用到类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("激活窗口");
 
本文章更多内容<<上一页 - 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++

  热门关键字: