Pokaż wyniki 1 do 5 z 5

Temat: C++/WinApi uchwyty

  1. #1

    Domyślnie C++/WinApi uchwyty

    Witam,
    Jest to mój pierwszy temat i z góry przepraszam za ewentualne niedomówienia. Uczę się c++ i troche winapi, moja wiedza jest mała dlatego niekiedy mam problemy nawet z prostymi rzeczami. Przechodząc do sedna tematu: ostatnio zaciekawiły mnie uchwyty i zdecydowałem sie ich pouczyc. Mój problem polega na otrzymywaniu tekstu z danego okienka za pomocą funkcji GetWindowText();
    (pisze w dev++ lub BCB6 i programy okienkowe aby nie tracic czasu na pisanie okienek, robie w BCB) wiec zacznijmy od tego że w BCB zrobiłem sbie okienko o nazwie Form1 i w nim pole edit (tekst w polu edit="okno1") i to własnie tego okna chicałem sie uchwycic. w drugim programie wstawiam kod:
    HWND hOkno=FindWindow(0, "Form1");
    char *napis=new char[50]; //50 to prszykładowa wartosc bo znam długosc tekstu wiec nie uzywam GetWindowTextLength();
    hOkno=GetWindow(hOkno, GW_CHILD);
    GetWindowText(hOkno, napis, 51);
    no i potem wyswietlenie zmiennej napis
    gdy wywołam kod otrzymam tekst "okno1" lecz jeśli w działającym programie zmienie zawartosc edit na jaki kolwiek inny tekst i wywołam ponownie kod to znów otrzymam stary tekst "okno1"
    Czy ktoś moze mi objasnic dlaczego tak sie dzieje?

  2. #2

    Domyślnie

    zamiast getwindowtext uzywaj WM_GETTEXT.


    do twojego problemu, to skad wiesz ze coklwiek zmieniasz?
    sprawdz na SendMessageA + WM_GETTEXT.

    aha, i odpusc sobie bcb, pisz w czystym c. Przynajmniej sie czegos nauczysz, a jesli pisanie 10 linijek to dla coebie zbyt duzy wysilek to ja nawet nie mam zamiaru sie trudzic zeby ci powiedziec dlaczego BCB nie zmienia faktycznego edita lub zle odczytuje jego wartosc.



    keywords: RegisterClassA, CreateWindowExA, WNDCLASS

  3. #3

    Domyślnie

    Dzięki za podpowiedź oczywiscie wiem że pisanie w BCB nie ma sensu ale skoro go mam to niekiedy używam gł do robienia właśnie takich rzeczy kiedy chce szybko cos okienkowego zrobic. Nie zdawałem sobie sprawy ze BCB moze coś źle odczytywac. Właśnie sie ucze czystego c++/winapi jeszcze raz thx za podpowiedź

  4. #4

    Domyślnie

    A tak z ciekawości:

    uruchamiasz EXE "okno1", zmieniasz Edit1

    następnie kompilujesz ten swój kod co podałeś w zgłoszeniu i przykładowo:

    Label1.Caption zawiera nieodświeżony łańcuch z Edit1 ?

    PS: a kompilator Borlanda uważam za bardzo dobry. Czyste C o ile mi wiadomo można robić w każdym kompilatorze - kwestia wybrania odpowiedniego projektu.

  5. #5

    Domyślnie

    MAIN()
    troche źle mnei zrozumiałeś. Forme w BCB mam o nazwie Form1 (standardowo) w nim robie pole Edit1 (nawa nie jest potrzebna bo do chwycenai sie tego okienka używam GetWindow() z parametrem GW_CHILD) i pole Edit1 jest wypełnione (od początku działania programu) tekstem "okno1" i teraz dalsza czesc: mam program (właściwie tylko łapacz tekstu) który wykonuje to co napisałem w pierwszym poscie.... i za pierwszym razem ładnie odczytuje mi tresc okienka Edit1 czyli "okno1" jednak gdy zmienie zawartosc Edit'a (w czasie pracy programu) na jakikolwiek tekst to dalej otrzymuje stary tekst "okno1". Jesli wiesz o co chodzi to odpisz prosze moge dac ci kod który ma ów tekst odczytywac
    Dzięki ze sie odezwałeś

Podobne wątki

  1. winapi - wyświetlanie bitmapy
    By ironwall in forum C/C++
    Odpowiedzi: 1
    Autor: 02-26-2009, 22:35
  2. WINAPI dev c++ problem
    By naichniach in forum C/C++
    Odpowiedzi: 0
    Autor: 11-12-2007, 20:23
  3. Winapi - Okienka
    By Tinek in forum C/C++
    Odpowiedzi: 1
    Autor: 09-16-2007, 21:18
  4. POP + WinAPI
    By 31337 in forum Newbie - dla początkujących!
    Odpowiedzi: 0
    Autor: 05-03-2007, 13:43
  5. [winapi]dostęp do pamięci
    By 31337 in forum C/C++
    Odpowiedzi: 0
    Autor: 04-24-2007, 19:18

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj