描述:
大家好,我最近做了个vc++6.0的AddIn插件,主要是管理vc++6.0的断点,比如点击工具栏上面的一个按钮就可以禁用所有的断点,再点一下就恢复回来。代码如下:
IDebugger *pDebugger = GetDispatchProperty<IDebugger*>
(m_pApplication, _T("Debugger"), IID_IDebugger);
if (pDebugger){
IBreakpoints *pBreakpoints = GetDispatchProperty<IBreakpoints*>
(pDebugger, _T("Breakpoints"), IID_IBreakpoints);
if (pBreakpoints){
long lCount = GetEnumCount(pBreakpoints);
for (long i=0; i<lCount; i++){
IBreakpoint *pBreakpoint = GetEnumItem<IBreakpoints, IBreakpoint>
(pBreakpoints, i, IID_IBreakpoint);
if (pBreakpoint){
VARIANT_BOOL bEnable;
pBreakpoint->get_Enabled(&bEnable);
bEnable = (bEnable == VARIANT_TRUE) ? VARIANT_FALSE : VARIANT_TRUE;
pBreakpoint->put_Enabled(bEnable);
pBreakpoint->Release();
}
}
pBreakpoints->Release();
}
pDebugger->Release();
}
我现在遇到的问题是,点击按钮后,我用vc自带的断点管理器(按Alt+F9或Ctrl+B可调出来),看断点确实是已经Disable禁用了,但是vc界面上对应的小红点还是在那显示呢,是还得刷新下视图吗?还是怎么办,当我在工程中新打开一个文档或按F5开始调试时,对应的断点(小红点)才刷新成灰色,这是为什么呢,还请各位大虾指教啊!~~~
补充:当我直接调用IBreakpoints接口的RemoveAllBreakpoints()方法时,断点就直接都去掉了,视图上的小红点也没有了!为什么我用IBreakpoint接口的put_Enabled禁用断点就没刷新呢?
解决方案1:
你的理解没错,应该是要刷新视图