Cのソースファイルにすると警告が出る理由
wavファイルを再生するプログラムを勉強中なのですが、下のプログラムをビルドすると
error C2055: 型リストではなく、仮パラメーター リストが必要です。
warning C4047: '関数' : 間接参照のレベルが 'MCIDEVICEID' と 'void *' で異なっています。
warning C4024: 'mciSendCommandW' : の型が 1 の仮引数および実引数と異なります。
という警告が出ます。
いろいろ試した結果、ソースファイルの拡張子をcからcppに変更したら警告が消えたのですがどうして拡張子がCのソースファイルでビルドすると警告がでるのか理由が全く分かりません。
拡張子を変更しないで警告を出さないようにするにはどこを直せばいいのでしょうか?
--- 実行環境 ---
Microsoft Visual C++ 2010 Express
WIN32 ユニコードビルド
C言語
#include<Windows.h>
#include "resource.h"
#include<MMSystem.h>
#pragma comment(lib,"winmm.lib")
HINSTANCE hinst;
INT_PTR CALLBACK dlgproc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR,int nCmdShow)
{
hinst=hInstance;
DialogBox(hinst,TEXT("mydlg"),NULL,dlgproc);
return 0;
}
INT_PTR CALLBACK dlgproc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp)
{
static MCI_OPEN_PARMS mop;
static MCI_PLAY_PARMS play;
switch(msg)
{
case WM_INITDIALOG:
mop.lpstrDeviceType=TEXT("WaveAudio");
mop.lpstrElementName=TEXT("C:\\Users\\test.wav");
mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD_PTR)&mop);
mciSendCommand(mop.wDeviceID,MCI_PLAY,NULL,(DWORD_PTR)&play);
return (INT_PTR)TRUE;
case WM_CLOSE:
EndDialog(hwnd,LOWORD(wp));
return (INT_PTR)TRUE;
break;
}
return(INT_PTR)FALSE;
}
補足
だと、何で初期化すれば良いのでしょう?