01. MFC中定位窗口6要素
1. MFC源码位置
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\atlmfc\src\mfc
2.RegisterClass
2.1 打开FileLocator Pro程序,输入要搜索的内容和位置,搜索出很多匹配的,带有前缀或后缀。
2.1把选项改成“全字匹配”再尝试
2.3 搜索后发现只存在于wincore.cpp文件中,用vs2019打开wincore.cpp并在1432行下断点,成功断下
3.消息循环
3.1 继续用上述方法搜索DispatchMessage,结果不多,按↓键一个个看过去,FileLocator Pro程序会自动定位到匹配的文本并高亮,thrdcore.cpp看起来比较像。
3.2 用vs2019在181行下断点,确实断下了
3.3 回溯两层发现循环结构,下断点并F10,发现一直在循环,判断属于消息循环
4.CreateWindow
4.1 继续用此方法搜索CreateWindow,下断点发现没断下。
4.2 搜索CreateWindowEx,找到两个。都下断点,只有wincore.cpp里的会断下
5. ShowWindow和UpdateWindow
5.1 继续搜索其他关键字,结果很多,放弃此方法。直接F10跟进去,前两个断点看了都不是
5.2 第3个断点跟进去,观察函数名看那个比较像,此函数80行代码,结尾处找到了
6. WndProc
6.1 类图中选中CFileView,在OnCreate上下断点
6.2 回溯5次发现
对话框
1.CreateDialog
1.1 搜索结果CreateDialogIndirect比较像,下断点能断下。
1.2单步到此处程序运行起来
1.3 进去找到了消息循环和ShowWIndow