user-0 提问: WIN32编程关于消息循环的一个问题

回复:
user: user-0
content: 引用 2楼user-4 的回复:对话框的回调过程 DialogProc 和窗口的回调过程 WindowProc 是不一样的，对话框的内部有真正的窗口回调过程，这里面再调用对话框的回调过程。  微软的 MSDN 里面明确的说明了，在 DialogProc 中是不能调用 DefWindowProc 的，你非要去调用！ 为什么会卡死只有微软能解释了，估计是这样破坏了鼠标点击这类消息的流动方向，让对话框内部的 WindowProc 没有机会处理消息，也就没法做出响应。  https://msdn.microsoft.com/en-us/library/windows/desktop/ms645469(v=vs.85).aspx  Remarks  You should use the dialog box procedure only if you use the dialog box class for the dialog box. This is the default class and is used when no explicit class is specified in the dialog box template. Although the dialog box procedure is similar to a window procedure, it must not call the DefWindowProc function to process unwanted messages. Unwanted messages are processed internally by the dialog box window procedure.谢谢！

user: user-0
content: 引用 1楼dustpg 的回复:那行str = (char*)malloc(nMaxCount*sizeof(char));也是屌  MessageBox呼出后父窗口肯定会卡住啊你没明白，不是说模态窗口。

user: user-1
content: 查MSDN是Windows程序员必须掌握的技能之一。 http://bbs.csdn.net/topics/390374955

user: user-0
content: 引用 2楼user-4 的回复:对话框的回调过程 DialogProc 和窗口的回调过程 WindowProc 是不一样的，对话框的内部有真正的窗口回调过程，这里面再调用对话框的回调过程。  微软的 MSDN 里面明确的说明了，在 DialogProc 中是不能调用 DefWindowProc 的，你非要去调用！ 为什么会卡死只有微软能解释了，估计是这样破坏了鼠标点击这类消息的流动方向，让对话框内部的 WindowProc 没有机会处理消息，也就没法做出响应。  https://msdn.microsoft.com/en-us/library/windows/desktop/ms645469(v=vs.85).aspx  Remarks  You should use the dialog box procedure only if you use the dialog box class for the dialog box. This is the default class and is used when no explicit class is specified in the dialog box template. Although the dialog box procedure is similar to a window procedure, it must not call the DefWindowProc function to process unwanted messages. Unwanted messages are processed internally by the dialog box window procedure.再次感谢！回去把贴结了

user: user-2
content: 引用 2 楼 adlay 的回复:对话框的回调过程 DialogProc 和窗口的回调过程 WindowProc 是不一样的，对话框的内部有真正的窗口回调过程，这里面再调用对话框的回调过程。  微软的 MSDN 里面明确的说明了，在 DialogProc 中是不能调用 DefWindowProc 的，你非要去调用！ 为什么会卡死只有微软能解释了，估计是这样破坏了鼠标点击这类消息的流动方向，让对话框内部的 WindowProc 没有机会处理消息，也就没法做出响应。  https://msdn.microsoft.com/en-us/library/windows/desktop/ms645469(v=vs.85).aspx  Remarks  You should use the dialog box procedure only if you use the dialog box class for the dialog box. This is the default class and is used when no explicit class is specified in the dialog box template. Although the dialog box procedure is similar to a window procedure, it must not call the DefWindowProc function to process unwanted messages. Unwanted messages are processed internally by the dialog box window procedure. +1 学习了，以前遇到过同样的问题。没有想到看msdn

user: user-0
content: 引用 1楼dustpg 的回复:那行str = (char*)malloc(nMaxCount*sizeof(char));也是屌  MessageBox呼出后父窗口肯定会卡住啊妈的，你为什么不去看看二楼的回复，看懂问题了吗？

user: user-0
content: 引用 9楼dustpg 的回复:[quote=引用 5 楼 dianziyanh 的回复:] [quote=引用 1楼dustpg 的回复:]那行str = (char*)malloc(nMaxCount*sizeof(char));也是屌  MessageBox呼出后父窗口肯定会卡住啊妈的，你为什么不去看看二楼的回复，看懂问题了吗？[/quote]  问题我看错了, 这是我的锅. 我主要是指出malloc那行的毛病, 娘的, 出口成脏吃多了，我也要骂人了[/quote]你不回也罢，玩溜溜球去吧

user: user-0
content: 引用 9楼dustpg 的回复:[quote=引用 5 楼 dianziyanh 的回复:] [quote=引用 1楼dustpg 的回复:]那行str = (char*)malloc(nMaxCount*sizeof(char));也是屌  MessageBox呼出后父窗口肯定会卡住啊妈的，你为什么不去看看二楼的回复，看懂问题了吗？[/quote]  问题我看错了, 这是我的锅. 我主要是指出malloc那行的毛病, 娘的, 出口成脏吃多了，我也要骂人了[/quote]你先把那行有什么问题说出来，再说其他的，可以吗？

user: user-3
content: 引用 5 楼 dianziyanh 的回复:[quote=引用 1楼dustpg 的回复:]那行str = (char*)malloc(nMaxCount*sizeof(char));也是屌  MessageBox呼出后父窗口肯定会卡住啊妈的，你为什么不去看看二楼的回复，看懂问题了吗？[/quote]  问题我看错了, 这是我的锅. 我主要是指出malloc那行的毛病, 娘的, 出口成脏吃多了，我也要骂人了

user: user-3
content: 那行str = (char*)malloc(nMaxCount*sizeof(char));也是屌  MessageBox呼出后父窗口肯定会卡住啊

user: user-4
content: 对话框的回调过程 DialogProc 和窗口的回调过程 WindowProc 是不一样的，对话框的内部有真正的窗口回调过程，这里面再调用对话框的回调过程。  微软的 MSDN 里面明确的说明了，在 DialogProc 中是不能调用 DefWindowProc 的，你非要去调用！ 为什么会卡死只有微软能解释了，估计是这样破坏了鼠标点击这类消息的流动方向，让对话框内部的 WindowProc 没有机会处理消息，也就没法做出响应。  https://msdn.microsoft.com/en-us/library/windows/desktop/ms645469(v=vs.85).aspx  Remarks  You should use the dialog box procedure only if you use the dialog box class for the dialog box. This is the default class and is used when no explicit class is specified in the dialog box template. Although the dialog box procedure is similar to a window procedure, it must not call the DefWindowProc function to process unwanted messages. Unwanted messages are processed internally by the dialog box window procedure.