2012-04-13 8 views
-1

私はここでチュートリアルを見てきました: http://msdn.microsoft.com/en-us/library/bb384843.aspxしかし、私は本当に1つの点で混乱しています。C++のreturn文/ Win32 APIについて

MSG msg; 
while (GetMessage(&msg, NULL, 0, 0)) 
{ 
    TranslateMessage(&msg); 
    DispatchMessage(&msg); 
} 

return (int) msg.wParam; 

私は彼らがそこに戻って何をしているのか分かりません。私は戻り値が1つの値でのみ動作することを知っていますなぜ2つのことがありますか?私は他のチュートリアルを見て、それらはすべて使用するように思われるreturn msg.wParam;

+10

これはCスタイルのキャストで、2番目の値ではありません。良いC++の本を手に入れよう。 –

+0

タルニコラとルチアン・グリゴアはそれぞれあなたの答えの半分を与えます。 – egrunin

+0

@BenVoigt - 実際には、質問に関するC++はありません。タイトルとタグを変更することをお勧めします。 – KevinDTimm

答えて

3

それはintの値をキャストしていますmsg.wParam。あなたは、関数宣言で見ることができるように:

int WINAPI WinMain(HINSTANCE hInstance, 
       HINSTANCE hPrevInstance, 
       LPSTR lpCmdLine, 
       int nCmdShow) 

戻り値の型はintです。私はプロパティーのタイプが何であるか正確にはわかりませんが、wParamはおそらくintではないため、明示的にintにキャストしなければならないか、コンパイルされません。

+0

それは重要ではありませんが、私は 'wParam'は' longなので 'WPARAM'型であると思います。 –

+0

'wParam'は' int'ではありませんが、私は暗黙の変換があると確信しています。 –

+0

'wParam'フィールドは実際に' WPARAM'です。これは 'UINT_PTR'で、OSが32ビットか64ビットかによって、それぞれunsigned intかunsigned __int64です。 –

0

そのコードはおそらくintを返す関数の一部です。 msg.wParamは暗黙的にintにキャストできないため、明示的なキャストが必要です。 (structあるタイプMSGの)msg varaibleのちょうどwParam分野があるに変換:

int ret = (int)msg.wParam; 
return ret; 
0

はなぜ

二つのことがありませんが、2つのことがあります。それは基本的に同等ですint