显示控制台和win32 GUI

时间:2012-08-27 20:02:59

标签: c++ user-interface console

我正在使用MinGW处理代码块,并且我有一个我已经工作了一段时间的编码项目。我一直在使用的项目是控制台应用程序,我依赖打印到控制台的调试功能。

然而,最近,我试图实现windows的'GetOpenFileName()'函数来拉出一个打开的文件框,这样用户就可以更轻松地打开文件了。但是,当在包含头文件的控制台应用程序中使用项目时,MinGW编译器就像无法找到该函数一样。我发现将项目更改为win32 GUI允许编译器找到该功能(我不完全理解为什么,但那只是我)。

问题是:我试图将调试信息输出到控制台,但当然现在应用程序是win32 GUI,控制台不显示,因此我看不到调试信息,我无法将其切换回来控制台应用程序或Windows打开文件框代码将无法编译。我如何显示控制台并仍然允许项目正确编译Windows GUI代码?

我无法更改调试功能或使用不同的调试功能,因为它们被写入所有类以协助回溯错误,并且至少有43个文件,其中大多数使用调试功能。

2 个答案:

答案 0 :(得分:3)

所以问题似乎不是由项目类型引起的,而是由设置/编译器选项引起的。编译器可以很好地找到函数声明,但链接器现在会抱怨,因为它无法找到定义。

为了解决这个问题,您需要链接到正确的库(如MSDN文档中所述,comdlg32.lib)。


在CodeBlocks中,您可以通过以下方式执行此操作:

  1. 转到项目菜单,然后点击构建选项
  2. 点击链接器设置标签。
  3. 点击添加
  4. 键入 comdlg32 ,然后按确定。
  5. 单击“确定”保存更改并退出。
  6. 现在,您的项目将在构建时链接到该库。如果您希望所有程序(无论是否项目)链接到该库,您可以使用以下步骤替换步骤1:

    1. 转到设置菜单,然后点击编译器和调试器
    2. 其余部分与此相同,但在全球范围内。


      对于它的价值,如果您使用原始命令行构建,则可以添加-lcomdlg32选项以产生相同的效果。

答案 1 :(得分:2)

使用AllocConsole在GUI应用程序中创建控制台。