是不是仅仅为了mfc的ui编辑器和代码建立联系如果没有mfc的ui编辑器,所有控件的位置等信息全在代码中写出,是不是就可以不用定义每个控件的id了?

解决方案 »

  1.   

    rc文件中也要使用,你的代码中也要使用,方便维护。如果你乐意,完全可以再rc文件中用数字代替这个ID,在你的代码中用数字代替这个,只不过增加维护困难而已。
      

  2.   

    to all:
    我觉得可以在传控件id的地方都用控件指针来代替,不用有id这个概念,不知道会不会有什么问题?
      

  3.   

    typedef void *HANDLE;
    句柄其实就是个指针。
      

  4.   

    to ls:
    id就是全局的为了跟其它控件作区别用的,指针也是全局唯一啊
    我写了一个简单的ui系统,没有用id,也能正常运作,所以才会问mfc为什么要用id这个概念
      

  5.   

    我如果现在要调用这个控件的一个方法,用ID是什么意思?ID就是个数字或是字符串能有方法吗?
    指针(句柄)就不一样了,它指向的是这个控件的对象。
    只有对象才能有方法,知道吗。
      

  6.   

    to akirya:
    不用数字,我是想用对象指针来代替id
      

  7.   

    当然你可以可以自己写个方法可以这样做,但是还是必须根据这个ID获取到控件的句柄,然后用句柄调用这个控件的方法。就比如设置一个文本框的方法一样,先要用 GetDlgItem根据ID获得控件句柄,然后用句柄  GetWindowText才行。
      

  8.   


    但是可以由id得到指针好像有点乱了,理下,呵呵我是想知道如果没有mfc的ui编辑器,是不是就可以不用有.rc中的id定义了?
    用对象的指针来代替id也就是说本来mfc是由id找到对象指针再调用其方法,现在直截使用指针
      

  9.   

    回来了。
    估计楼主是对程序加载的时候的顺序不清楚吧。(MFC中)是这样的。
    1。程序启动
    2。比如要加载一个文本框控件,就要告诉系统我要加载一个文本框控件,然后楼把这个文本框的名字(ID)告诉系统,注意这个时候控件还没加载到内存,程序中根本就不存在这个控件的对象,更别说指针了。
    3。系统根据控件的ID找到这个控件,并且获取各种参数,然后加载这个控件到内存。
    4。返回控件在内存中的地址也就是指针。也就是说指针是在3以后才产生的,但是你在2的时候就想用指针,可能吗。
      

  10.   

    我假设下啊
    如果没有mfc的ui编辑器
    创建控件的这一步放在程序的代码中,用代码来手动创建控件由于是我自己写的ui系统,没有写相应的ui编辑器,所以只能在代码中创建,是不是就可以不用id了
      

  11.   

    这个不是唯一不唯一的事,有些API一定要用控件ID,它不用控件指针的。
      

  12.   

    你用WIN32的SDK吧。HWND CreateWindow(          
        LPCTSTR lpClassName,
        LPCTSTR lpWindowName,
        DWORD dwStyle,
        int x,
        int y,
        int nWidth,
        int nHeight,
        HWND hWndParent,
        HMENU hMenu,
        HINSTANCE hInstance,
        LPVOID lpParam
    );Return ValueIf the function succeeds, the return value is a handle to the new window.If the function fails, the return value is NULL. To get extended error information, call GetLastError. 
    看到第二个参数了没?
    再看看返回值?
    也就是说没有名字的话就创建不成功,返回一个NULL,也就是没有指针。没有名字,就没有指针。
      

  13.   

    这些api是windows的,我自己的ui系统(用directx写的)用我自己写的函数,已经写好了一个简单的ui系统,没有用id,能正常运行,能满足目前的需求之后想起来mfc中有id这个概念,所有有此一问,想知道是不是因为mfc有ui的编辑器,才加入了id,如果没有编辑器,安全可以只用指针?
      

  14.   

    to yschenwei:还是没明白...我没救了 T_T
      

  15.   


    不可能啊,在不用mfc的情况下你怎么做? 在C语言开发的时候你用啥来代替这个对象指针?
      

  16.   

    to akirya:
    用directx画ui,消息传递什么的都自己写,只响应最基本的键盘按下和鼠标按下,然后自己定义控件回调函数