2012-09-13 21:42
⁄ 工业·编程
⁄ 共 2172字
// object.h
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <map>
#include <string>
class FObject
{
public:
typedef boost::function<void()> EventFunction;
struct EventParam
{
std::string strEvent;
EventFunction eventFunc;
float fDeltaTime;
mutable float CurrentTime;
bool &...
代码集锦阅读全文
2012-09-13 20:09
⁄ 工业·编程
⁄ 共 3034字
消息标签页的设计如下图:
该页中的列表框与样式列表框不同,它的每个列表项前都有一个复选框。这要用到类CCheckListBox。这里要再次用到子类化的知识。从本文第一段制作CMyPric过程中,我们体会到了子类化的作用,也感到了它的不便之处。这里,我们采取另外一种方法,借鸡生蛋:即用Class Wizard生成相关代码,然后再修改它。首先在该属性页对话框上画一个列表控件,打开Class Wizard关联一个CListBox类变量m_listStatus。设...
Spy++阅读全文
2012-09-13 20:06
⁄ 工业·编程
⁄ 共 1733字
类标签页的设计如下图:
类名在常规标签页已获取。API函数GetClassLong可以获取类样式值。样式列表的实现与窗口样式类似,不再赘述。
七、窗口标签页
窗口标签页的设计如下图:
在该页中,主要用到了下面几个API函数:GetNextWindow、GetWindow和SendMessage。这三个API函数搭配以不同的参数值可以实现不同的功能。这里没有用GetWIndowText函数,是因为它不能取出部分系统窗口和隐藏窗口的标题。我们用SendMessage函数加WM_GE...
Spy++阅读全文
2012-09-12 20:04
⁄ 工业·编程
⁄ 共 949字
API函数GetWindowLong可以获取窗口样式或扩展样式的值。然后我们罗列出以WS_开头的所有窗口样式与上述样式值做"位与"操作,如果被包含,则返回其窗口样式,否则返回0。这样,就可以得到窗口样式的列表了。扩展样式列表与样式列表类似。相关代码如下:
CListBox* pListStyle=(CListBox*)(((CPage1*)FromHandle(g_hPage1))->GetDlgItem(IDC_LIST_STYLE)); CListBox* pListExStyle=(CListBox*)(...
Spy++阅读全文
2012-09-12 20:03
⁄ 工业·编程
⁄ 共 1665字
常规标签页负责显示窗口句柄、窗口类名、标题文本、窗口矩形、窗口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); ((CP...
Spy++阅读全文
2012-09-12 20:02
⁄ 工业·编程
⁄ 共 1332字
选项卡控件中,5个标签页对应5个属性页对话框,与它们关联的类分别取名为CPage0、CPage1、CPage2、CPage3、CPage4。在CSpyXXDlg中建立私有成员变量m_page0、m_page1、m_page2、m_page3、m_page4。在其初始化过程中建立这5个属性页对话框:
m_page0.Create(IDD_OLE_PROPPAGE_LARGE,GetDlgItem(IDC_TAB1)); m_page1.Create(IDD_OLE_PROPPAGE_LARGE1,GetDlgItem(IDC_TAB1)); m_page2.Create(IDD_OLE_PROPPAGE_LARGE2,GetDlgIt...
Spy++阅读全文
2012-09-12 20:01
⁄ 工业·编程
⁄ 共 616字
第一个复选框是"总在最上面",代码如下:
void CSpyXXDlg::OnChktop() { int nTop=((CButton*)GetDlgItem(IDC_CHKTOP))->GetCheck(); if(nTop==1) :: SetWindowPos(m_hWnd,HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); else ::SetWin...
Spy++阅读全文
2012-09-12 19:59
⁄ 工业·编程
⁄ 共 2829字
打开VC集成开发环境,建立一个基于对话框的工程。我们把这个工程取名为SpyXX。在窗体中画上一个图片框控件(Picture)、一个静态文本控件(Static)、两个复选框控件(Check Box)和一个选项卡控件(Tab Control)。界面设计如下图。
探测器的制作需要两个图标文件(.ico)和一个鼠标光标文件(.cur),分别用于正常状态下的显示、鼠标拖出时的显示以及拖出时的鼠标指针;这些资源哪里来啊?Spy++中就有啊,用eXeScope...
Spy++阅读全文
2012-09-12 19:50
⁄ 工业·编程
⁄ 共 2741字
为了实现菜单的自绘,花了我几个小时,其实真正解决后又发现很简单。实现菜单的自绘只需要三个步骤:
第一步:将所有菜单项设置为MF_OWNERDRAW,即自绘模式
第二步:在WM_MEASUREITEM消息中设置菜单项的大小
第三步:在WM_DRAWITEM消息中进行菜单项的绘制
问题首先出现在了第一步,我要绘制的是一个上下文菜单,即右键菜单,要将菜单项设置为MF_OWNERDRAW,需要用到ModifyMenu函数,起始由于ModifyMenu函数的参数设置错误,导致...
UI界面阅读全文
2012-09-12 19:49
⁄ 工业·编程
⁄ 共 3439字
VC中在listctrl中嵌入进度条,截图如下:
其实要实现这个非常容易,以下是自绘ListCtrl的代码,首先继承CListCtrl, 然后增加函数OnCustomDraw: void CProcessList::OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult) { //draw each item.set txt color,bkcolor.... NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); // Take the default processing unless we set this to somet...
CListCtrl阅读全文