WinApi, wyświetlanie tekstu.

0

Mój problem polega na tym, że nie wiem jak wyświetlać tekst w okenku klasy: "MESSAGE".

hText_output = CreateWindowEx( WS_EX_CLIENTEDGE, "MESSAGE", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 5, 5, 480, 366, hwnd, NULL, hInstance, NULL );

Robię sobie taki prosty programik okienkowy z jednym polem tekstowym, jednym przyciskiem o nazwie "ADD" i jadnym oknem, które wyświetla to co było w polu tekstowym. Wyobrazić można to sobie łatwo patrząc na komunikatory, po wciśnięciu przycisku ADD znika to co wpisałem w polu tekstowym i powinno się to pojawić w tym drugim polu, lecz niestety nie wiem jakiej funkcji użyć, czy może używam złej klasy okienka. Ale co zrobić by wyświetliło mi tekst bez możliwości edycji, a tekst dodawało w takim samym trybie jak ta instrukcja:

FILE *p = fopen("plik.txt","a");
fprintf(p,"Tekst\n");

Dodaje linijkę tekstu do pliku?

0

http://msdn.microsoft.com/en-us/library/windows/desktop/bb773169(v=vs.85).aspx

Dziwi mnie klasa MESSAGE ;o. Powiem jak ja bym to zrobił.

  1. Tworzysz okno, na nim kontrolki klasy EDIT, BUTTON, STATIC - opisane są w linku.
  2. W obsłudze komunikatu WM_COMMAND(naciśnięcie przycisku), pobierasz długość tekstu z EDIT'a za pomocą:
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms633521(v=vs.85).aspx
  3. Pobierasz text z EDIT'a http://msdn.microsoft.com/en-us/library/windows/desktop/ms633520(v=vs.85).aspx
  4. Ustawiasz tekst kontrolce STATIC za pomocą:
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms633546(v=vs.85).aspx

Tutaj nie będzie tak dobrze jak w pliku, nie ma trybu append. Musisz przechowywać tekst i do niego 'doklejać' nowy, albo za każdym razem pobierać tekst ze static'a i doklejać nowy. Później ustawiasz ten tekst kontrolce. Na char'ach może to być kłopotliwe, proponuje stringi.

string calosc;
string czesc;
calosc+=czesc;
0

właśnie jeśli chodzi o dodawanie tekstu do okienek to pewnie będę musiał tak zrobić, ale przy wyświetlaniu tekstu w okienku funkcją SetWindowText(); nie działają znaki nowej linii "\n" aczkolwiek w okienku gdzie wpisuje tekst do wyświetlenia stworzę nową linie to będzie ona wyświetlona tak jak powinna.

No i tak jak wspomniałem, mnie interesuje coś w stylu okienka komunikatora, żeby można było zaznaczyć tekst i go skopiować. Ale żeby nie było możliwości jego edycji.

edit, koniec linii rozwiązany, trzeba wstawiać "\r\n".

0

Dziękuje za pomoc, temat można zamknąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1