在我的vc工程中又很多菜单、按钮的资源ID,我想在一个界面上统一对所有资源ID进行属性设置,如在某种权限下对所有ID对应的按钮进行置灰,请问我怎么做

解决方案 »

  1.   

    用我的两个文件:WindowUtils.h:#pragma once
    #include <windows.h>
    class WindowUtil
    {
    public:
    static bool EnableChildWindow(HWND hWnd,bool bEnable);
    private:
    static BOOL CALLBACK EnumChildProc(HWND hwndChild,LPARAM lParam);
    };WindowUtils.cpp:
    #include "stdafx.h"
    #include "WindowUtils.h"
    bool WindowUtil::EnableChildWindow(HWND hWnd,bool bEnable)
    {
    if( ! IsWindow(hWnd) )
    return false;
    ::EnumChildWindows(hWnd,EnumChildProc,bEnable);
    return true;
    }BOOL WindowUtil::EnumChildProc(HWND hwndChild,LPARAM lParam)
    {
    ::EnableWindow(hwndChild,(BOOL)lParam);
    return TRUE;
    }
    使用:
    比如对话框一个按钮点击中使用:
    WindowUtil::EnableChildWindow(GetSafeHwnd(),false);PS:对菜单没有用: 菜单得另外写,用EnableMenuItem
      

  2.   

    谢谢两位大哥的回信,这可是我第一次在csdn上得到帮助阿。
    但是我可能没有说清楚,我是想在一个界面维护整个工程里的所有资源enable情况,比如说在我设定的一个界面里设置主管对对某个对话框里的某个按钮有操作能力,而以后可以改变这一配置,需要能对所有资源进行上述操作,并且是在一个类里对所有资源操作,请大哥指教
      

  3.   

    这个很间单嘛有两种权限:a,b
    就定义一全局变量,CString power;当设置a权限power="A";当设置b权限power="B";然后在每一个dialog 的oninit事件中
    if (power=="A")
    {
    GetDialogItem(ID_BUTTON1)->EnabelWindow(false);
    GetDialogItem(ID_BUTTON2)->EnabelWindow(false);
    GetDialogItem(ID_BUTTON3)->EnabelWindow(false);
    ...
    }
    else if (power=="B")
    {
    ...
    }
      

  4.   

    不要忘了在要用到POWER的文件前加extern CString...
      

  5.   

    to 
    {lookyliu(刘琪) 
    "而不是直接在程序里加入代码"
    }你比我不懒!
    看样子你还是用VB比较好,在VB中没要写什么代码就可以这样做了