对于非窗口过程,我一般是如此理解回调函数:使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。感觉只是用函数指针调用函数,自己可以看到这个调用过程。但是,对于SDK编程,MainWindow建立时候,它注册WNDCLASS中,对应的回调函数是WinProc,我看不到显形的调用过程,请问程序是如何进入回调函数中去的?
在这里就定义了这个窗口类有消息时传递给这个函数。
while (GetMessage (&msg, NULL, 0, 0)) {
TranslateMessage (&msg);
DispatchMessage (&msg);
}
它自动将消息分发到该窗口对应的回调函数中处理,我看不到中间的调用过程,是不是已经被封装好了?
LPWSTR lpCmdLine, int nCmdShow) 这是进入的第一个函数,它的参数值是谁给的?
当一个窗口接收到一个消息后,通过TranslateMessage()函数把消息转换成WM_something格式的消息
然后再通过DispatchMessage()函数把这个消息发送给窗口函数,窗口函数再对相应的消息进行处理
就明白了。