更新: 我认为这是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
我不知道如何解决这个问题,eik!
我正在尝试调用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;
}
}
我知道这些结构是什么,但可以让编译器识别它们。我错过了一个参考文献,或者是否存在VC ++别名?
干杯。
答案 0 :(得分:4)
您需要包含包含这些定义的头文件。来自http://msdn.microsoft.com/en-us/library/ms644943%28VS.85%29.aspx:
在Winuser.h中声明,包括 WINDOWS.H
所以,就这样做:
#include <Windows.h>
答案 1 :(得分:1)
当你在C ++ / CLI Windows窗体应用程序中#include windows.h时,你会得到几个令人讨厌的符号名称冲突。但这是自我诱导的。在WF应用程序中抽取自己的消息循环不是合适的。它已经有一个,Application :: Run()。你不能自己写,你将无法正确预处理消息,使键盘快捷键等工作。
在尝试之前,先完成一些C ++ / CLI编程教程。