在无模式对话框还没关闭的时候,点了关闭程序按扭,接下来MFC框架发生了哪些事?俺主要想弄清楚在关闭MFC程序的时候,MFC框架是如何执行清除及关闭命令的。
请大侠解答一下。
请大侠解答一下。
解决方案 »
- 用CreateProcess创建的进程和AfxBeginThread创建的线程与MsgWaitForMultipleObjects难以理解的关系
- 关于内存分配的问题,请高手示教:
- 求命,十万火急,如何用ODBC API 调用存储过程,请专家帮我看看错在声么地方?100分相送
- (救命救命救命)怎么在sid应用中点击菜单弹出一个跟sdi默认界面一样的界面啊???(可能是messagebox)
- 在2000下使用findfile api 找不到光驱上的文件???!!!
- 求救:关于用VC开发ACCESS数据库前台
- 只想过4级
- 能把对话框嵌入CView中吗?
- 如何实现在不同网段或在互连网上的点对点的通讯(包括拨号)
- 在基于SDI的程序中创建一个可拖动的菜单,如何创建??
- 请教,急,如何使得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 依次调试直至程序调试退出。