Předmět Autor Datum
Pokud program krokujes, tak hlavni thread stoji a ceka na to, az stisknes F7, F8, F9 A protoze nedoc…
Jan Fiala 04.05.2006 20:44
Jan Fiala
A neexistuje nejaký "plugin", čo by správy vysielal? Či ono ide o to, že keď sa na formulári niečo z…
msx. 04.05.2006 20:52
msx.
Spravy vysiela windows, problem je ze ich tvoj program nemoze spracovat kedze si ho zastavil, tak pr…
MM.. 05.05.2006 15:25
MM..
Celkom tomu nerozumiem. Viem, že správu spracovať nemôže, ale debugger by mohol zistiť, že aha, tu t…
msx. 06.05.2006 00:20
msx.
Evidentne nechapes ze spravy "vytvara" (posiela) Windows (napr. ak treba prekreslit okno tak Windows…
MM.. 06.05.2006 18:56
MM..
Tak už tomu začínam rozumieť. Mne ani tak nejde o obsah toho okna ako o vysvetlenie, prečo je to tak…
msx. 07.05.2006 00:25
msx.
Snazil som sa to napisat zjednodusene, v skutocnosti je to trochu komplikovanejsie (spravy su urcene…
MM.. 07.05.2006 00:33
MM..
NO čo sa vláken týka, tak viem, že (ešte som s vláknami v programe nerobil) treba vyvolať obsluhu sp…
msx. 07.05.2006 00:43
msx.
? ::) Netreba nic vyvolavat, treba vediet co clovek robi (resp. vediet co Windows robi :-)). Citania… poslední
MM.. 07.05.2006 00:55
MM..

Celkom tomu nerozumiem. Viem, že správu spracovať nemôže, ale debugger by mohol zistiť, že aha, tu treba vytvoriť správu, lebo sme zmenili label a mohol by to odsimulovať. Myslím tak odsimulovať, že vytvorí správu a Windows by ju spracoval. Potom by to debugger vyhodnotil a ak bude treba, tak sa zastaví na pred vykonaním ďalšieho riadku programu. Dalo by sa to teda bližšie osvetliť? Lebo síce chápem, že to nepôjde, ale nechápem prečo je to tak ako to je. Trochu hlbšie to vysvetliť. Tiež si myslím, že nie som sám koho to zaujíma.

Evidentne nechapes ze spravy "vytvara" (posiela) Windows (napr. ak treba prekreslit okno tak Windows posle tvojmu programu WM_PAINT), a spracovat ju musi tvoj program (v pripade WM_PAINT vykreslit obsah okna), nie naopak. Ak tvoj program stoji tak predsa nemoze vykreslit obsah okna, pretoze ani nemoze prevziat zo svojej fronty sprav to WM_PAINT ktore mu Windows poslali, lebo si ho proste zastavil a teda nebezi ani message-loop tvojho programu.
Trochu by si sa mal viac zamerat na debugovanie toho co je naozaj nutne, snad vidis co mas v premennych nepotrebujes predsa pri debugovani vidiet obsah okna (v najhorsom pripade sa da zavesit breakpoint na WM_PAINT, ale ak to je v kniznici delphi tak by si sa musel asi najprv naucit assembler).

P.S. Ak chces vidiet vystup tak program pust a nastav si breakpoint len na nejaku akciu, tam kde treba. Nechapem co robis vzivote som pri debugovani nepotreboval vidiet obsah okna programu.

Snazil som sa to napisat zjednodusene, v skutocnosti je to trochu komplikovanejsie (spravy su urcene vzdy niektoremu oknu, okien moze byt viac, slucka sprav byva len jedna ale tiez ich moze byt v programe viac :-)). A navyse ak by si mal v programe vytvaranie extra threadu (napr. worker thread alebo thread s vlastnym oknom a sluckou sprav) tak pri zastaveni toho threadu tvoj program moze stale bezat a teda aj vykreslovat obsah okna :-), ale na to radsej teraz zabudni.
Az budes mat problem ze tvoj program pri nejakej dlhsej vypoctovej operacii nereaguje a neprekresluje okno a az skonci ta dlhsia vypoctova operacia tak zrazu vykona vsetko co nervozny pouzivatel pocas vypoctu naklikal po celom okne :-D Potom si spomen na vyraz "worker thread". ;-)

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