【问题标题】:Compiler can't find structures, what should i be including编译器找不到结构,我应该包括什么
【发布时间】:2010-01-05 22:20:27
【问题描述】:

更新: 我认为这是 Windsows.h 我需要包含并且您已经确认了这一点,但是当我确实包含它时,我会收到一堆消息,如下所示...

1>C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(5934) : error C2872: 'IDataObject' : ambiguous symbol
1>        could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\objidl.h(251) : System::Windows::Forms::IDataObject IDataObject'
1>        or       'c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll : System::Windows::Forms::IDataObject

我不知道如何解决这个问题,哎呀!


我正在尝试调用 PeekMessage,但是当我尝试编译时出现以下错误。

'MSG' : 未声明的标识符 'HWND' : 未声明的标识符 'PM_REMOVE' : 未声明的标识符

我的代码如下...

MSG message;
    while(form->Created)
                {
                    while( PeekMessage( &message, (HWND)form->Handle.ToPointer(), 0, 0, PM_REMOVE ) )
                    {
                        TranslateMessage( &message );
                        DispatchMessage( &message );
                        if( !mainWindow->Created )
                            break;
                    }
                }

我知道这些结构是什么,但可以让编译器识别它们。我是否缺少 ref 或者是否有相同的 VC++ 别名?

干杯。

【问题讨论】:

  • 你已经包含 windows.h 了吗?

标签: c++ visual-c++ data-structures managed-c++ peekmessage


【解决方案1】:

您需要包含一个包含这些定义的头文件。来自http://msdn.microsoft.com/en-us/library/ms644943%28VS.85%29.aspx

在 Winuser.h 中声明,包括 Windows.h

所以,就这样做吧:

#include <Windows.h>

【讨论】:

    【解决方案2】:

    当您在 C++/CLI Windows 窗体应用程序中#include windows.h 时,您会遇到一些令人讨厌的符号名称冲突。但这是自我诱导的。在 WF 应用程序中插入您自己的消息循环是不合适的。它已经有一个,Application::Run()。您不能自己编写,您将无法适当地预处理消息以使键盘快捷键之类的东西起作用。

    在尝试之前先阅读一些 C++/CLI 编程教程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-31
      • 2021-01-16
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 2017-12-03
      相关资源
      最近更新 更多