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

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

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

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

逆风编程技术
  其余各项详见源代码。 这个列表框的作用不仅仅是显示窗口的状态,还要在发生勾选改动时即时改变窗口状态或激发其行为。勾选状态改变的消息是LBN_SELCHANGE。另外,为了不使一个勾选的改变就引起所有列表项都激发一遍,我们采用switch结构,以使哪个列表项被选中就激发哪个列表项。代码如下:

void CPage4::OnSelchangeListstatus()
{
    // TODO: Add your control notification handler code here
    int n=m_listStatus.GetCurSel();
    switch(n)
    {
    case 0:
        if(m_listStatus.GetCheck(0)== 1 )
            ::ShowWindow(g_hWnd, SW_SHOW);
        else
            ::ShowWindow(g_hWnd, SW_HIDE);
        break;
    case 1:
        if(m_listStatus.GetCheck(1) == 1)
            ::EnableWindow(g_hWnd, TRUE);
        else
            ::EnableWindow(g_hWnd,FALSE);
        break;
    case 2:
        if(m_listStatus.GetCheck(2) == 1)
            ::SetWindowPos(g_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
        else
            ::SetWindowPos(g_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
        break;
    case 3:
        if(m_listStatus.GetCheck(3) == 1)
            ::SendMessage(g_hWnd, EM_SETREADONLY, TRUE, 0);
        else
            ::SendMessage(g_hWnd, EM_SETREADONLY, FALSE, 0);
        break;
    case 4:
        if(m_listStatus.GetCheck(4) ==1)
        {
            ::ShowWindow(g_hWnd, SW_MAXIMIZE);
            m_listStatus.SetCheck(5,0);
        }
        else
            ::ShowWindow (g_hWnd, SW_RESTORE);
        break;
    case 5:
        if (m_listStatus.GetCheck(5) == 1)
        {
            ::ShowWindow(g_hWnd, SW_MINIMIZE);
            m_listStatus.SetCheck(4,0);
        }
        else
            ::ShowWindow(g_hWnd, SW_RESTORE);
        break;
    case 6:
        if(m_listStatus.GetCheck(6) ==1)
        {
            ::ShowWindow (g_hWnd, SW_RESTORE);
            m_listStatus.SetCheck(6,0);
            m_listStatus.SetCheck(5,0);
            m_listStatus.SetCheck(4,0);
        }
        break;
    case 7:
        if(m_listStatus.GetCheck(7) ==1)
        {
            ::SendMessage (g_hWnd, WM_CLOSE, 0, 0);
            m_listStatus.SetCheck(7,0);
        }
        break;
    case 8:
        if(m_listStatus.GetCheck(8) ==1)
        {
            ::BringWindowToTop(g_hWnd);
            m_listStatus.SetCheck(8,0);
        }
        break;
    default:
    ;
    }
}

  Spy++打造完毕。回顾其过程,难点不多,细细碎碎问题不少。也难免啊,不仅要形似,咱还要神似。文中一定还有很多地方不够周全,希望同行朋友们不吝赐教。代码在Window XP + VC6.0中调试通过。Spy++源码同时放在这里。欢迎访问我的个人主页(阿珊境界)http://www.asanscape.com,欢迎加入我们的VC讨论群713035。


 
本文章更多内容<<上一页 - 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++

  热门关键字: