65.9K
CodeProject 正在变化。 阅读更多。
Home

在 ActiveX 控件中从控制台窗口进行 Printf() 调试

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.26/5 (12投票s)

2005年8月24日

1分钟阅读

viewsIcon

46432

在 ActiveX 控件内部创建控制台窗口。

引言

好的,事情是这样的…… 在开发用于浏览器包含的 ActiveX 控件的过程中,我需要观察大量数据。 使用标准的断点调试变得非常繁琐,更糟糕的是,该控件在远程机器上出现故障。

为了能够轻松地查看数据,我决定看看是否可以从控件内部创建一个控制台窗口。 经过网络搜索,我没有找到任何相关信息,所以我决定尝试一个快速测试。

结果,操作起来非常简单。 要从控件内部进行 printf() 调试,您只需要修改您的 OnCreate() 方法如下

 LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
 {
  // TODO : Add Code for message handler.
  // Call DefWindowProc if necessary. 
  /* create a seperate console window for
     printf (print, println and debug) output */
  AllocConsole();
  freopen ("CONOUT$", "w", stdout ); 
  return 0;
 }

您还需要包含适当的头文件 <stdio.h>,现在您应该能够在代码中的任何位置使用 printf()

当然还有其他跟踪输出的方法…… 但这保证在没有安装任何工具的机器上可用和可见。

注意:虽然我还没有这样做,但也可以重新映射 stdin 并从控制台窗口获取输入,如果您需要实现一个简单的调试控制台。

又一个添加到工具箱中的工具…… 随意使用。

© . All rights reserved.