首页
社区
课程
招聘
callback和控件是如何关联起来的?
发表于: 2010-6-18 16:26 3999

callback和控件是如何关联起来的?

2010-6-18 16:26
3999
在写图形界面程序的时候,窗口上会有很多控件,有些控件会添加callback,但是在资源文件里面并没有这些callback的信息,想请问大家callback的代码是怎么和控件相关联的,是不是在可执行文件中的哪个地方有标注

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 161
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶,沙发自己坐
2010-6-21 14:46
0
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你的意思是callback函数吗?
2010-6-21 14:59
0
雪    币: 188
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
不知道你说的是不是mfc编程,如果是的话一般都是在*.cpp文件开始不远的地方有个管理消息映射的宏来注册的
如,
BEGIN_MESSAGE_MAP(CMemLeakDlg, CDialog)
        ON_WM_TIMER()
        ON_WM_SYSCOMMAND()
        ON_WM_PAINT()
        ON_WM_QUERYDRAGICON()
        //}}AFX_MSG_MAP
        ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
END_MESSAGE_MAP()
如此处的(IDC_BUTTON1就是你的控件id, OnBnClickedButton1 就是你处理该id的callback函数, 不同的消息对应不同的事件,同样需要不同的callback函数来处理。
2010-6-21 15:10
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不知道LZ说的callback是什么?? 回调函数??  如果是的话跟资源文件没什么关系吧~~!!
2010-6-21 15:43
0
雪    币: 161
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
callback就是回调函数,有些callback是针对某些控件的动作,比如按了一个Button就会有相应的动作发生,我说的callback就是这类,4楼的哥们说的我有些理解了,虽然不是mfc编程,估计也都差不多,大家还有什么其他的说法吗?
2010-6-22 14:43
0
雪    币: 156
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
所谓控件都是窗体,所有窗体都对应一个WNDCLASS(EX)结构。若是按钮之类的windows提供的窗体,则在内核中提供了默认的WNDCLASS;若是自己创建的窗体必须在CreateWindow函数中指定WNDCLASS(EX)结构。

在WNDCLASS(EX)结构中有一个函数指针,指向这个窗口的窗口函数,即你说的callback函数。

typedef struct tagWNDCLASS {
  UINT      style;
  WNDPROC   lpfnWndProc;
  int       cbClsExtra;
  int       cbWndExtra;
  HINSTANCE hInstance;
  HICON     hIcon;
  HCURSOR   hCursor;
  HBRUSH    hbrBackground;
  LPCTSTR   lpszMenuName;
  LPCTSTR   lpszClassName;
} WNDCLASS, *PWNDCLASS;

HWND WINAPI CreateWindow(
  __in_opt  LPCTSTR lpClassName,
  __in_opt  LPCTSTR lpWindowName,
  __in      DWORD dwStyle,
  __in      int x,
  __in      int y,
  __in      int nWidth,
  __in      int nHeight,
  __in_opt  HWND hWndParent,
  __in_opt  HMENU hMenu,
  __in_opt  HINSTANCE hInstance,
  __in_opt  LPVOID lpParam
);

所以你去找createwindow的调用,第一个参数指定了wndclass的名称(字符串),然后搜索一下数据区,看看哪个wndclass的lpszClassName能对应上,然后你就可以找到此窗体的callback函数了。
2010-6-22 21:28
0
雪    币: 622
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼上正解 还有就是你要是还是好奇  就看看 translatemessage 和dispatchmessage 代码 或者为了便于理解看看 深入简出MFC第一部分的讲解
2010-6-22 21:45
0
游客
登录 | 注册 方可回帖
返回
//