Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem winAPI aplikace Hello World

Dobrý večer,

nainstaloval jsem si Microsoft visual studio 2010 a zkusil v něm přeložit winAPI hello world aplikace, ale chyba.

#include <windows.h> 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
  MessageBox(NULL, "Ahoj Win API !!!","První program", MB_OK);
  return 0;
}

Kod jsem převzal odtud: http://www.builder.cz/rubriky/c/c--/ucime-se-win-a pi-motivacni-uvod-155994cz

Při překladu mi visual studio vyhazuje chybu:
main.cpp(6): error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [17]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Ve winAPI zatím neumím, tak pořádně nevím o jakou chybu se jedná.
A jak ji opravit.

Předem díky za pomoc.

Předmět Autor Datum
MS pouziva takzvane TCHAR, to je automaticky prekladacom zmenene na single byte alebo multibyte stri… poslední
MM.. 10.10.2013 20:40
MM..

MS pouziva takzvane TCHAR, to je automaticky prekladacom zmenene na single byte alebo multibyte string (unicode), v zavislosti od nastaveni prekladaca.

Ked pises konstantny string, a ma z toho byt TCHAR, tak musis pouzit makro _T, aby to v pripade potreby skonvertoval na multibyte (unicode). T.j.
MessageBox(NULL, _T("Ahoj Win API !!!"),_T("První program"), MB_OK);

Je to jasne z tej chybovej hlasky. Nevie konvertovat const char (co je jendobytovy string) na LPCWSTR, co je wide. Prekladas unicode program (co je dobre), tak musis pouzivat tutorialy nejake novsie, ne nejake z roku 1998 :D

P.S. tie tchary ta budu prenasledovat neustale, ptz dementny MS kvoli nim uplne zmenil aj nazvy standardnych C funkcii, proste MS chaos :) Ale neni to ziaden velky problem. Musis ako programator vediet kde idu multibyte stringy a kde mas strikne jednobytove (napr. pri praci so subormi) a kde je pripadne nutna konverzia.

Zpět do poradny Odpovědět na původní otázku Nahoru