问5个问题,有的很难!

FlyingSch 2002-07-20 07:51:01
1.为什么VC不允许我按F11追踪函数

210: DeleteFile(szFilePath);
在源代码中按F11进入DeleteFile()结果失败
00401EE0 mov esi,esp
00401EE2 lea ecx,[ebp-108h]
00401EE8 push ecx
00401EE9 call dword ptr [__imp__DeleteFileA@4 (0041c748)]
在Disassemble下也进不了call dword ptr [__imp__DeleteFileA@4 (0041c748)]


==========================================================================
2.请教高手一个段界限的问题

本线程LDT的一个项:
Sel LineBase Limit 界限粒度
167 00000000 0B7A0 Data32 DPL=7 P=1 Type=7 G=0 DT1=1
DS的内容由始到终都是装着167,从上得知选择子167的线性界限为0至0B7A0,可是
存在DS的全局变量的偏移都要求在0x00400000以上,那存取这些全局变量时岂不是会
发生段越界的保护错误?

==========================================================================
3.怎样让进程不在"关闭程序"的窗口中出现?

用RegisterServiceProcess(0,0)好像不行
==========================================================================
4.为什么用EnumFontFamiliesEx列举出的字体名有很多重复的

以下列举出的全是字体的FaceName
仿宋_GB2312
@仿宋_GB2312
Arial
Courier New
Lucida Console
Lucida Console
Lucida Console
Lucida Console
Lucida Console
Tahoma
Tahoma
Tahoma

代码:
CClientDC dc(this);

font.lfCharSet=DEFAULT_CHARSET;
font.lfFaceName[0]=0;
font.lfPitchAndFamily=0;
::EnumFontFamiliesEx(dc.GetSafeHdc(),&font,(FONTENUMPROC )EnumFontFamExProc,(LPARAM) this,0);
==========================================================================
5.用ClassWizard给CView指明菜单上的WM_COMMAND由它自己来响应,可是用SPY++监视消息发现所有的
WM_COMMAND消息均由主窗体CMainFrame来响应。如何解释?

BEGIN_MESSAGE_MAP(CTemp2View, CView)
//{{AFX_MSG_MAP(CTemp2View)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
END_MESSAGE_MAP()
...全文
10 点赞 收藏 18
写回复
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
FlyingSch 2002-07-22
To : : cwanter(LDT to GDT) 。只是程序的小错误而已,正确结果如下:
Sel Line Limit Data DPL P Type G DT1
167 00000000 0B7A0 Data32 DPL=3 P=1 Type=7 G=0 DT1=1
还有其它的描述符:
15F 00000000 FFFFF Data32 DPL=3 P=1 Type=B G=1 DT1=1 (这就是CS的描述符,一切很正常。)
167 00000000 0B7A0 Data32 DPL=3 P=1 Type=7 G=0 DT1=1
16F 80DDAC20 0001F Data16 DPL=3 P=1 Type=3 G=0 DT1=1
177 00000000 00178 Data16 DPL=3 P=1 Type=3 G=0 DT1=1
17F 00000000 00180 Data16 DPL=3 P=1 Type=3 G=0 DT1=1
187 00000000 00188 Data16 DPL=3 P=1 Type=3 G=0 DT1=1
18F 0009C4C0 002DF Data16 DPL=3 P=1 Type=3 G=0 DT1=1
回复
look__look 2002-07-22
3.怎样让进程不在"关闭程序"的窗口中出现?

用RegisterServiceProcess(0,0)好像不行

win2k没有提供这个函数!!98可以。
回复
cwanter 2002-07-22
楼主,问题二:DPL只有2位,怎么会等于7呢?在描述符属性字段中有4位是限值的。
回复
FlyingSch 2002-07-21
what? what ?
回复
cwanter 2002-07-21
哦,是数据段,回去查查书。
回复
FlyingSch 2002-07-21
我用MFC编的怎么会是16位。不信你自己编个MFC然后查看DS对应的
LDT描述符,它的段界限就是那么短,而CS就很长(我忘了是多少,好像是
4G,应该是4G)。
问题3在你回答之前我就会了,哈哈
回复
cwanter 2002-07-21
问题2。是16位代码吧?
问题3。RegisterServiceProcessFun(GetCurrentProcessId(),1);
问题1。用softice就可以调试。
回复
FlyingSch 2002-07-21
请高手帮我解答其余的2到3的问题,谢谢
回复
daehappy 2002-07-21
up!gz!
回复
FlyingSch 2002-07-21
高手请帮我解答2和4的问题
====================================================================
2.请教高手一个段界限的问题

本线程LDT的一个项:
Sel LineBase Limit 界限粒度
167 00000000 0B7A0 Data32 DPL=7 P=1 Type=7 G=0 DT1=1
DS的内容由始到终都是装着167,从上得知选择子167的线性界限为0至0B7A0,可是
保存在DS的全局变量的偏移都要求在0x00400000以上,那存取这些全局变量时岂不是会
发生段越界的保护错误?
====================================================================
4.为什么用EnumFontFamiliesEx列举出的字体名有很多重复的

以下列举出的全是字体的FaceName
仿宋_GB2312
@仿宋_GB2312
Arial
Courier New
Lucida Console
Lucida Console
Lucida Console
Lucida Console
Lucida Console
Tahoma
Tahoma
Tahoma

代码:
CClientDC dc(this);

font.lfCharSet=DEFAULT_CHARSET;
font.lfFaceName[0]=0;
font.lfPitchAndFamily=0;
::EnumFontFamiliesEx(dc.GetSafeHdc(),&font,(FONTENUMPROC )EnumFontFamExProc,(LPARAM) this,0);
==========================================================================

回复
Wargod2002 2002-07-20
cdocument,cwinapp之类 的就不是了
回复
FlyingSch 2002-07-20
CView怎么不是窗口类?CView::GetSafeHwnd()返回的可是很效值啊
回复
Wargod2002 2002-07-20
你说得对,mfc并不只有窗口类才能响应命令消息,但是这不是command routing的目的,还是看看书和msdn吧
回复
dnyz 2002-07-20
command routing就是mfc中为了使那些不是窗口类的类来处理WM_COMMAND消息的机制。
因为非窗口类的类是没有窗口函数的,所以不能直接接收WM_COMMAND消息并处理。
回复
FlyingSch 2002-07-20
多说一点关于"command routing",多说50个字吧,就50个
回复
Wargod2002 2002-07-20
1.win api不包含调试信息的
5.这就是mfc的command routing
回复
archoo 2002-07-20
1.DeleteFile是API函数,并不是MFC的代码,所以你没法跟踪;

回复
camel_vc 2002-07-20
第5个问题,你可以参考一下深入浅出mfc里关于doc/view架构的解释
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告