你用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,也就是没有指针。没有名字,就没有指针。
我觉得可以在传控件id的地方都用控件指针来代替,不用有id这个概念,不知道会不会有什么问题?
句柄其实就是个指针。
id就是全局的为了跟其它控件作区别用的,指针也是全局唯一啊
我写了一个简单的ui系统,没有用id,也能正常运作,所以才会问mfc为什么要用id这个概念
指针(句柄)就不一样了,它指向的是这个控件的对象。
只有对象才能有方法,知道吗。
不用数字,我是想用对象指针来代替id
但是可以由id得到指针好像有点乱了,理下,呵呵我是想知道如果没有mfc的ui编辑器,是不是就可以不用有.rc中的id定义了?
用对象的指针来代替id也就是说本来mfc是由id找到对象指针再调用其方法,现在直截使用指针
估计楼主是对程序加载的时候的顺序不清楚吧。(MFC中)是这样的。
1。程序启动
2。比如要加载一个文本框控件,就要告诉系统我要加载一个文本框控件,然后楼把这个文本框的名字(ID)告诉系统,注意这个时候控件还没加载到内存,程序中根本就不存在这个控件的对象,更别说指针了。
3。系统根据控件的ID找到这个控件,并且获取各种参数,然后加载这个控件到内存。
4。返回控件在内存中的地址也就是指针。也就是说指针是在3以后才产生的,但是你在2的时候就想用指针,可能吗。
如果没有mfc的ui编辑器
创建控件的这一步放在程序的代码中,用代码来手动创建控件由于是我自己写的ui系统,没有写相应的ui编辑器,所以只能在代码中创建,是不是就可以不用id了
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,也就是没有指针。没有名字,就没有指针。
不可能啊,在不用mfc的情况下你怎么做? 在C语言开发的时候你用啥来代替这个对象指针?
用directx画ui,消息传递什么的都自己写,只响应最基本的键盘按下和鼠标按下,然后自己定义控件回调函数