0

更新: Windsows.hi を含める必要があると思いましたが、これを確認しましたが、含めると、次のようなメッセージがたくさん表示されます...

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++ エイリアスがありますか?

乾杯。

4

2 に答える 2

4

これらの定義を含むヘッダー ファイルを含める必要があります。http://msdn.microsoft.com/en-us/library/ms644943%28VS.85%29.aspxから:

Winuser.h で宣言され、Windows.h が含まれます

だから、これをしてください:

#include <Windows.h>
于 2010-01-05T22:24:21.223 に答える
1

C++/CLI Windows フォーム アプリに #include windows.h を含めると、いくつかの厄介なシンボル名の競合が発生します。しかし、これは自己誘導です。WF アプリで独自のメッセージ ループをポンピングすることは適切ではありません。すでに Application::Run() があります。独自のものを作成することはできません。メッセージを適切に前処理して、キーボード ショートカットなどを機能させることはできません。

これを試す前に、いくつかの C++/CLI プログラミング チュートリアルを実行してください。

于 2010-01-06T02:10:35.287 に答える