Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

mciSendString - problem z argumentem

Ostatnio zmodyfikowano 2012-12-18 16:38
Autor Wiadomość
McAffey
Temat założony przez niniejszego użytkownika
mciSendString - problem z argumentem
» 2012-12-18 16:20:10
Witam.

Irytuje mnie pewna sytuacja.

Gdy utworzę zwykły projekt (w środowsiku code::blocks), dolinkuję plik "libwinmm.a", i dolączem plik .cpp :

C/C++
#include <windows.h>
#include <mmsystem.h>
#include <conio.h>
using namespace std;

int main()
{
    mciSendString( "play muzyka.mid", NULL, 0, NULL );
    getch();
   
    return 0;
}

To wszystko się poprawnie kompiluje i działa.

A gdy w projekcie, który ma już sporo kodu, chcę dodać odtwarzanie dźwięku midi, tak samo linkuję, "libwinmm.a" i includuję (między innymi) mmsystem.h i windows.h, po dodaniu linijki
mciSendString( "play muzyka.mid", NULL, 0, NULL );
 kompilator zwraca błąd :

error: cannot convert 'const char*' to 'const WCHAR*' for argument '1' to 'MCIERROR mciSendStringW(const WCHAR*, WCHAR*, UINT, HWND__*)'|

Już pomijam to, że aby się skompilowało mogę po prostu dawać zmienną LPCWSTR, ale intryguje mnie, dlaczego ten sam kompilator w tej samej funkcji raz dopuszcza dany argument, a raz nie. Prośba do programistów bardziej doświadczonych i z większą wiedzą : ktoś potrafi rozjaśnić mój przyćmiony umysł ?
P-71376
xevuel
» 2012-12-18 16:24:27
[MSDN] mciSendString
Ta funkcja ma dwie wersje, Unikodową i ANSI. Pewnie gdzieś coś zmieniłeś, żeby kompilator brał funkcje z przyrostkiem W (na przykład zdefiniowałeś makro UNICODE).
P-71377
McAffey
Temat założony przez niniejszego użytkownika
» 2012-12-18 16:38:03
Masz rację, zupełnie na to nie zwróciłem uwagi. W swoim projekcie definiuję UNICODE.

Dzięki, wiedziałem że to musi być kwestia tego typu, ale nie potrafiłem zgadnąć co konkretnie - coś dzwoniło tylko nie wiedziałem w którym kościele :P
P-71379
« 1 »
  Strona 1 z 1