🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
5 messages
5 total messages Started by Remek Fri, 24 Aug 2007 06:08
Identyfikator i uchwyt
#1477
Author: Remek
Date: Fri, 24 Aug 2007 06:08
46 lines
2124 bytes
Witam

Napisałem mały programik testowy w Masm32 korzystając z tutoriala
Iczeliona rozdz. 22 - Przejęcie klasy okna:

http://www.i-lo.tarnow.pl/edu/inf/prg/win32asm/index.html.

Nieco go rozbudowałem wstawiając dwa buttony i procedurki konwertujące
liczbę dziesiętną do bin/okt/hex, wpisujące wyniki do kolejnych kontrolek
w poniższy sposób:

 invoke SetWindowTextA, hwndEdit+4, addr Bufor3
 invoke SetWindowTextA, hwndEdit+8, addr Bufor4
 invoke SetWindowTextA, hwndEdit+12, addr Bufor4

I program się wysypuje. Działa dobrze do dwóch kontrolek:

 invoke SetWindowTextA, hwndEdit+4, addr Bufor3
 invoke SetWindowTextA, hwndEdit+8, addr Bufor4
 ;invoke SetWindowTextA, hwndEdit+12, addr Bufor4

Okazało się, że uchwyt trzeciej kontrolki nakłada się na ID buttona
"Oblicz" (Button1ID  equ 3) i powstaje pętla.

Pytania:

Jak znaleźć w binarce identyfikatory?
Uchwyty są jeśli się nie mylę nadawane dynamicznie, więc jak to się
dzieje, że program sypie się za każdym uruchomieniem?
Czy nie jest to przypadkiem wina kompilatora?

Zmiana identyfikatorów buttonów pomogła, ale gdzie pewność, że w pewnych
warunkach program się nie sypnie?

było:

Button1ID  equ 3
Button2ID  equ 4

zmieniłem na:

Button1ID  equ 30
Button2ID  equ 31


Pozdrawiam  Remek
Re: Identyfikator i uchwyt
#1478
Author: Lopez
Date: Fri, 24 Aug 2007 15:57
38 lines
1858 bytes
Remek napisał(a):
> Witam
> 
> Napisałem mały programik testowy w Masm32 korzystając z tutoriala
> Iczeliona rozdz. 22 - Przejęcie klasy okna:
> 
> http://www.i-lo.tarnow.pl/edu/inf/prg/win32asm/index.html.
> 
> Nieco go rozbudowałem wstawiając dwa buttony i procedurki konwertujące
> liczbę dziesiętną do bin/okt/hex, wpisujące wyniki do kolejnych kontrolek
> w poniższy sposób:

a czy linie
hwndEdit   DD 6 DUP(?)
tez zaktualizowales?

> Okazało się, że uchwyt trzeciej kontrolki nakłada się na ID buttona
> "Oblicz" (Button1ID  equ 3) i powstaje pętla.

Skad taki wniosek, przeciez to calkiem odrebne abstrakcje.

> Pytania:
> 
> Jak znaleźć w binarce identyfikatory?
> Uchwyty są jeśli się nie mylę nadawane dynamicznie, więc jak to się
> dzieje, że program sypie się za każdym uruchomieniem?

co znaczy sypie sie?

> Czy nie jest to przypadkiem wina kompilatora?

Tak. kompilator zawsze wszystkiemu jest winny :P.

Lepiej pokaz caly kod, bo inaczej to tylko wrozenie z fusow.

-- 
Pozdrawiam
Lopez
Re: Identyfikator i uchwyt
#1479
Author: Remek
Date: Sat, 25 Aug 2007 01:01
31 lines
1872 bytes
Użytkownik "Lopez" napisał:

> > Okazało się, że uchwyt trzeciej kontrolki nakłada się na ID buttona
> > "Oblicz" (Button1ID  equ 3) i powstaje pętla.
>
> Skad taki wniosek, przeciez to calkiem odrebne abstrakcje.

Do takiego wniosku doszli lepsi ode mnie fachowcy. W pewnym sensie jego
prawdziwość potwierdza fakt, że po zmianie identyfikatorów jest dobrze
(ale to tylko moja wiara, bo sam tego nie zidentyfikowałem).

> co znaczy sypie sie?

"Program wykonał... itd.", następnie blue screen i pomaga tylko twardy
reset. Po tym wszystkim zdarzają się poważne szkody w systemie i FAT, tak
że radzę być ostrożnym.

> Tak. kompilator zawsze wszystkiemu jest winny :P.

Wiem :)

> Lepiej pokaz caly kod, bo inaczej to tylko wrozenie z fusow.

Przepraszam za przeoczenie. Już to naprawiam. Tu jest hnade.zip
zawierający moje źródło, oraz pliki potrzebne do kompilacji i
uruchomienia:

http://remek62.republika.pl/Tymcz/tymcz.html

Pozdrawiam  Remek
Re: Identyfikator i uchwyt
#1480
Author: Lopez
Date: Sat, 25 Aug 2007 09:30
30 lines
1918 bytes
Remek napisał(a):
> Użytkownik "Lopez" napisał:
> 
>>> Okazało się, że uchwyt trzeciej kontrolki nakłada się na ID buttona
>>> "Oblicz" (Button1ID  equ 3) i powstaje pętla.
>>
>> Skad taki wniosek, przeciez to calkiem odrebne abstrakcje.
> 
> Do takiego wniosku doszli lepsi ode mnie fachowcy. W pewnym sensie jego
> prawdziwość potwierdza fakt, że po zmianie identyfikatorów jest dobrze
> (ale to tylko moja wiara, bo sam tego nie zidentyfikowałem).
> 

Byles blisko, a wlasciwie trafiles w setno, ale
nie myl pojecia uchwytu i identyfikatora, bo wprowadzasz w blad.
Najpierw tworzysz 4 kontrolki o identyfikatorach 0-3
a potem dw butony i ID 3,4 i masz oczywista kolizje
bo w manualu
http://msdn2.microsoft.com/en-us/library/ms632679.aspx
jest dobitnie wyraznie napisane:

hMenu
[in] Handle to a menu, or specifies a child-window identifier
depending on the window style. (...) The application determines
the child-window identifier; it must be unique for all child
windows with the same parent window.

-- 
Pozdrawiam
Lopez
Re: Identyfikator i uchwyt
#1481
Author: Remek
Date: Sat, 25 Aug 2007 10:15
16 lines
1438 bytes
Użytkownik "Lopez napisał:

> Byles blisko...

> Najpierw tworzysz 4 kontrolki o identyfikatorach 0-3
> a potem dw butony i ID 3,4 i masz oczywista kolizje

Ogromne dzięki za wyjaśnienie. Teraz sprawa wydaje się oczywista. Nie
wziąłem pod uwagę, że identyfiaktory kolejnych kontrolek tworzone są w
pętli od zera do 3 przez inc ebx. Przyjąłem (jak widać błędnie), że jak
na wejściu jest zero, to identyfikator nie jest tworzony.

Jeszcze raz dziękuję i pozdrawiam.

Remek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads