现在位置: 首页 > 自动控制 > 工业·编程 > 文章
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  &...
阅读全文
消息标签页的设计如下图: 该页中的列表框与样式列表框不同,它的每个列表项前都有一个复选框。这要用到类CCheckListBox。这里要再次用到子类化的知识。从本文第一段制作CMyPric过程中,我们体会到了子类化的作用,也感到了它的不便之处。这里,我们采取另外一种方法,借鸡生蛋:即用Class Wizard生成相关代码,然后再修改它。首先在该属性页对话框上画一个列表控件,打开Class Wizard关联一个CListBox类变量m_listStatus。设...
阅读全文
类标签页的设计如下图: 类名在常规标签页已获取。API函数GetClassLong可以获取类样式值。样式列表的实现与窗口样式类似,不再赘述。 七、窗口标签页 窗口标签页的设计如下图: 在该页中,主要用到了下面几个API函数:GetNextWindow、GetWindow和SendMessage。这三个API函数搭配以不同的参数值可以实现不同的功能。这里没有用GetWIndowText函数,是因为它不能取出部分系统窗口和隐藏窗口的标题。我们用SendMessage函数加WM_GE...
阅读全文
    API函数GetWindowLong可以获取窗口样式或扩展样式的值。然后我们罗列出以WS_开头的所有窗口样式与上述样式值做"位与"操作,如果被包含,则返回其窗口样式,否则返回0。这样,就可以得到窗口样式的列表了。扩展样式列表与样式列表类似。相关代码如下: CListBox* pListStyle=(CListBox*)(((CPage1*)FromHandle(g_hPage1))->GetDlgItem(IDC_LIST_STYLE)); CListBox* pListExStyle=(CListBox*)(...
阅读全文
常规标签页负责显示窗口句柄、窗口类名、标题文本、窗口矩形、窗口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...
阅读全文
选项卡控件中,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...
阅读全文
第一个复选框是"总在最上面",代码如下: 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...
阅读全文
    打开VC集成开发环境,建立一个基于对话框的工程。我们把这个工程取名为SpyXX。在窗体中画上一个图片框控件(Picture)、一个静态文本控件(Static)、两个复选框控件(Check Box)和一个选项卡控件(Tab Control)。界面设计如下图。 探测器的制作需要两个图标文件(.ico)和一个鼠标光标文件(.cur),分别用于正常状态下的显示、鼠标拖出时的显示以及拖出时的鼠标指针;这些资源哪里来啊?Spy++中就有啊,用eXeScope...
阅读全文
2012-09-12 19:50 工业·编程 ⁄ 共 2741字 暂无评论
为了实现菜单的自绘,花了我几个小时,其实真正解决后又发现很简单。实现菜单的自绘只需要三个步骤: 第一步:将所有菜单项设置为MF_OWNERDRAW,即自绘模式 第二步:在WM_MEASUREITEM消息中设置菜单项的大小 第三步:在WM_DRAWITEM消息中进行菜单项的绘制 问题首先出现在了第一步,我要绘制的是一个上下文菜单,即右键菜单,要将菜单项设置为MF_OWNERDRAW,需要用到ModifyMenu函数,起始由于ModifyMenu函数的参数设置错误,导致...
阅读全文
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...
阅读全文