Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



ATL chybová hláška

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: ATL chybová hláška

Autor: Bufo

17:59:15 14.01.2010

Tak například pokud v příkladu z knihy Programování COM objekty, ActiveX a Win32 aplikací - OknoFormular napíšu hned po vytvoření okna

[quote]
SendMessage(WM_CLOSE);
[/quote]

tak sice hláška nenastane, ale ozve se zvuk chyby..

Citovat příspěvek

 

Re: ATL chybová hláška

Autor: RadekChalupa

21:32:23 13.01.2010

Jednak PostQuitMessage není nejlepší způsob ukončení aplikace v takovémhle případě. Lepší je nejprve zkusit standardně ukončit hlavní okno aplikace (PostMessage(WM_CLOSE, ...) a pokud to nepůjde tak zavolat ExitProcess;

Nevím jaká konkrétní hláška o smazání objektu to je, ale v okenních třídách ATL je (jen v DEBUG módu ošetřeno ASSERTem) to že když je zrušena třída zabalující okno které ještě není zrušené (z pohledu HWND) tak to vypíše chybu ve smyslu "objekt zrušen před tím než bylo zrušeno okno"

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, Win32 API, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Citovat příspěvek

 

ATL chybová hláška

Autor: Bufo

20:05:30 13.01.2010

Nějak se mi nedaří udělat následující věc. Dejme tomu jednoduchá nemodální dialogová aplikace v ATL. Před zobrazením okna test. Pokud dojde k chybě, tak chci zobrazit MessageBox a ukončit program.

například:
[quote]
if (TEST) {
MessageBox(_T("Chyba: Nenalezen soubor data.dat"), _T("Chyba"),
MB_OK | MB_ICONERROR);
PostQuitMessage(0);
}
[/quote]

ale to mi píše chybu při spuštení.. ve smyslu že objekt který chci zrušit, je smazán

nějak to souvisí s tím dialogem, ale nevím jak..

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: