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

[WINAPI] Rzutowanie LPSTR

Ostatnio zmodyfikowano 2014-03-03 12:17
Autor Wiadomość
Moorfox
Temat założony przez niniejszego użytkownika
[WINAPI] Rzutowanie LPSTR
» 2014-03-03 11:28:05
Witam, rozpocząłem ostatnio kurs WINApi na tej stronie, jednak na windows8 zaszły nie wielkie zmiany co do biblioteki windows.h
I w bardzo niewielkim stopniu kurs jest nieaktualny. Utknąłem już na temacie bodajże 4, dotyczącego obsługi plików:
Mamy bufor typu LPSTR i w którym są zapisane jakieś dane i mamy funkcję SetWindowText( Tutaj jakies dwa argumenty jeden typu HWND drugi jakiś inny ); i gdy próbuje tak jak jest w kursie SetWindowText( hwnd, Bufor ); to funkcja nakazuje mi rzutowanie Bufor'a na jakiś inny typ gdy to robie zamiast tego tekstu wyskakują mi chińskie lub japońskie znaczki. Szukałem w necie, i znalazłem to był jakiś ?alias? którego miałem użyć SetWindowText( hwnd, TEXT(Bufor) ); Ale to tylko działa jeśli podamy bezpośrednio ciąg znaków na przykład "słowo" lub czego nie jestem pewien bo nie sprawdzałem tablice TCHAR'ów, ale na LPSTR to nie działa ktoś wie jak to zrobić ?

EDIT:
Od razu drugie pytanie z serii super newbie dotyczące samego C++.

class File
{
LPSTR Bufor;
DWORD dwRozmiar, dwPrzeczyt;
HANDLE hToFile;

public:
HANDLE hFileCreate(HINSTANCE hInsTance)
{


hToFile = CreateFile(_T("text.txt"), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hToFile == INVALID_HANDLE_VALUE) {

PostQuitMessage(0);
}

dwRozmiar = GetFileSize(hToFile, NULL);
if (dwRozmiar == 0xFFFFFFFF) {
PostQuitMessage(0);
}
Bufor = (LPSTR)GlobalAlloc(GPTR, dwRozmiar + 1);
if (Bufor == NULL) {
PostQuitMessage(0);
}
if (!ReadFile(hToFile, Bufor, dwRozmiar, &dwPrzeczyt, NULL)) {
PostQuitMessage(0);
}
Bufor[dwRozmiar] = 0;

return hToFile;
}

void hFileClose()
{
GlobalFree(Bufor);
CloseHandle(hToFile);
}
LPSTR BuforLoad()
{
return Bufor;
}
};

Mam tą klase i chce zrobić tak jak z funkcją interfejs u góry tzn na przykład funkcja
 void Wypisz(string tekst)
{
std::cout << tekst << endl;
}

I w programie wyglądało by to tak, że deklaracja jest u góry, a ciało na dole

void Wypisz(string tekst);

void main()
{
kod
}

 void Wypisz(string tekst)
{
std::cout << tekst << endl;
}

Dzięki temu funkcja wypisz jest widoczna w main(), da się tak zrobić z klasą ? Szukałem w wyszukiwarce i na tej stronie ale nic o tym nie znalazłem lub to przegapiłem. Nawet do końca nie wiem co w google wpisać
P-105551
Monika90
» 2014-03-03 11:44:41
Zmiany zaszły raczej w IDE. Kompilujesz w trybie UNICODE, a kurs zakłada tryb ANSI.

da się tak zrobić z klasą ?
Da się
C/C++
class F
{
public:
    void foo();
};

int main()
{
    F f;
    f.foo();
}

void F::foo()
{
}

main ma zwracać int, a nie void
P-105552
Moorfox
Temat założony przez niniejszego użytkownika
» 2014-03-03 12:17:31
Dzięki, co do main to wiem po prostu obie wersje są dzialajace wiec postanowilem sobie skrocic,jeszcze raz dzięki za konkretną odpowiedź
P-105555
« 1 »
  Strona 1 z 1