在无模式对话框还没关闭的时候,点了关闭程序按扭,接下来MFC框架发生了哪些事?俺主要想弄清楚在关闭MFC程序的时候,MFC框架是如何执行清除及关闭命令的。
请大侠解答一下。
请大侠解答一下。
解决方案 »
- 用opencv处理运动车辆跟踪和车辆计数问题
- ListCtrl MFC item选中状态的设置
- 怎样用MFC写一个Hello World程序?我应该建一个怎样的工程?
- 关于CListCtrl 的 Extended Styles
- 求解dialog中弹出的dialog如何支持拖拽功能
- 一条sql语句
- 用webBrowser的时候,请问怎么实现类似IE的“查看源文件”的功能?我想既然网页都显示出来了,这些源码应该在硬盘上了,怎么找到他们呢?
- 请问这个函数的作用是什么?
- vc共享目录?
- 关于使用全局函数的问题!!
- 请教,急,如何使得EDIT中的单行文字从右向左移动,然后又从右向左移动?
- 多对话框中同一变量值的问题
主要是WM_SYSCOMMAND产生WM_CLOSE,自己要调用DestroyWindow函数,然后才产生WM_DESTROY,最后是调用PostNcDestroy虚函数。
主要是WM_SYSCOMMAND产生WM_CLOSE,自己要调用DestroyWindow函数,然后才产生WM_DESTROY,最后是调用PostNcDestroy虚函数。
大框架窗体发送的消息有:
<00719> 005E0A68 S WM_NCHITTEST xPos:821 yPos:18
<00720> 005E0A68 R WM_NCHITTEST nHittest:HTCLOSE
<00721> 005E0A68 S WM_SETCURSOR hwnd:005E0A68 nHittest:HTCLOSE wMouseMsg:WM_LBUTTONDOWN
<00722> 005E0A68 R WM_SETCURSOR fHaltProcessing:False
<00723> 005E0A68 P WM_NCLBUTTONDOWN nHittest:HTCLOSE xPos:821 yPos:18
<00724> 005E0A68 P WM_LBUTTONUP fwKeys:0000 xPos:747 yPos:-34
<00725> 005E0A68 S WM_CAPTURECHANGED hwndNewCapture:00000000
<00726> 005E0A68 R WM_CAPTURECHANGED
<00727> 005E0A68 S WM_SYSCOMMAND uCmdType:SC_CLOSE xPos:821 yPos:18
<00728> 005E0A68 S WM_CLOSE
<00729> 005E0A68 S WM_SHOWWINDOW fShow:False fuStatus:0 (ShowWindow 被调用)
<00730> 005E0A68 R WM_SHOWWINDOW
<00731> 005E0A68 S WM_WINDOWPOSCHANGING lpwp:0012F3B4
<00732> 005E0A68 R WM_WINDOWPOSCHANGING
<00733> 005E0A68 S WM_WINDOWPOSCHANGED lpwp:0012F3B4
<00734> 005E0A68 R WM_WINDOWPOSCHANGED
<00735> 005E0A68 S WM_NCACTIVATE fActive:False
<00736> 005E0A68 R WM_NCACTIVATE fDeactivateOK:True
<00737> 005E0A68 S WM_ACTIVATE fActive:WA_INACTIVE fMinimized:False hwndPrevious:(空)
<00738> 005E0A68 S WM_ACTIVATETOPLEVEL fActive:False dwThreadID:0012F17C
<00739> 005E0A68 R WM_ACTIVATETOPLEVEL
<00740> 005E0A68 S WM_NCACTIVATE fActive:False
<00741> 005E0A68 R WM_NCACTIVATE fDeactivateOK:True
<00742> 005E0A68 S WM_FLOATSTATUS wFloatState:FS_DEACTIVATE
<00743> 005E0A68 R WM_FLOATSTATUS
<00744> 005E0A68 R WM_ACTIVATE
<00745> 005E0A68 S WM_ACTIVATEAPP fActive:False dwThreadID:00000F88
<00746> 005E0A68 R WM_ACTIVATEAPP
<00747> 005E0A68 S WM_WINDOWPOSCHANGING lpwp:0012F388
<00748> 005E0A68 R WM_WINDOWPOSCHANGING
<00749> 005E0A68 S WM_WINDOWPOSCHANGED lpwp:0012F388
<00750> 005E0A68 R WM_WINDOWPOSCHANGED
<00751> 005E0A68 S message:0x0501 [用户定义:WM_USER+257] wParam:00000000 lParam:00000000
<00752> 005E0A68 R message:0x0501 [用户定义:WM_USER+257] lResult:00000000
<00753> 005E0A68 S WM_DESTROY
<00754> 005E0A68 R WM_DESTROY
<00755> 005E0A68 S WM_NCDESTROY
<00756> 005E0A68 R WM_NCDESTROY
<00757> 005E0A68 R WM_CLOSE
<00758> 005E0A68 R WM_SYSCOMMAND
================================================================================
小窗体的消息有:
<00036> 007F0968 S WM_WINDOWPOSCHANGING lpwp:0012F3B4
<00037> 007F0968 R WM_WINDOWPOSCHANGING
<00038> 007F0968 S WM_FLOATSTATUS wFloatState:FS_DEACTIVATE
<00039> 007F0968 R WM_FLOATSTATUS
<00040> 007F0968 S WM_ACTIVATEAPP fActive:False dwThreadID:00000F88
<00041> 007F0968 R WM_ACTIVATEAPP
<00042> 007F0968 S WM_SHOWWINDOW fShow:False fuStatus:SW_PARENTCLOSING
<00043> 007F0968 S WM_SHOWWINDOW fShow:False fuStatus:0 (ShowWindow 被调用)
<00044> 007F0968 R WM_SHOWWINDOW
<00045> 007F0968 S WM_WINDOWPOSCHANGING lpwp:0012EFB0
<00046> 007F0968 R WM_WINDOWPOSCHANGING
<00047> 007F0968 S WM_WINDOWPOSCHANGED lpwp:0012EFB0
<00048> 007F0968 S WM_GETICON fType:True
<00049> 007F0968 R WM_GETICON hicon:00000000
<00050> 007F0968 S WM_GETICON fType:False
<00051> 007F0968 R WM_GETICON hicon:00000000
<00052> 007F0968 S WM_GETICON fType:True
<00053> 007F0968 R WM_GETICON hicon:00000000
<00054> 007F0968 R WM_WINDOWPOSCHANGED
<00055> 007F0968 R WM_SHOWWINDOW
<00056> 007F0968 S WM_WINDOWPOSCHANGING lpwp:0012F388
<00057> 007F0968 R WM_WINDOWPOSCHANGING
<00058> 007F0968 S WM_WINDOWPOSCHANGED lpwp:0012F388
<00059> 007F0968 S WM_GETICON fType:True
<00060> 007F0968 R WM_GETICON hicon:00000000
<00061> 007F0968 S WM_GETICON fType:False
<00062> 007F0968 R WM_GETICON hicon:00000000
<00063> 007F0968 S WM_GETICON fType:True
<00064> 007F0968 R WM_GETICON hicon:00000000
<00065> 007F0968 R WM_WINDOWPOSCHANGED
<00066> 007F0968 S WM_DESTROY
<00067> 007F0968 R WM_DESTROY
<00068> 007F0968 S WM_NCDESTROY
<00069> 007F0968 R WM_NCDESTROY
1.如果你的程序是对话框的,那么先用classwizard添加一个WM_DESTROY消息相应
2.在你的主程序任意位置 F9 添加一个断点,在OnDestroy里边某行也添加一个
3.按F5调试 打开对话框,再关闭,主要观察左下角的窗口context 内,它就是退出的时候程序要调用的函数
4.按shift+F11 依次调试直至程序调试退出。