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 win32 podokno

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: ATL win32 podokno

Autor: Farao

17:41:04 11.01.2010

Uvnitř obsluhy WM_PAINT je správně jenom verze s BeginPaint,EndPaint. Kdekoli jinde můžeš použít GetDC.

Citovat příspěvek

 

Re: ATL win32 podokno

Autor: Bufo

15:33:55 11.01.2010

Děkuju. :) Dělal jsem chybu v parametrech fce. Create().

Ještě by mě zajímala jedna věc. Udělal jsem si třídu OpenGL okna. V ní při zachycení zprávy WM_PAINT získávám kontext zařízení (hdc) takto: HDC hdc = GetDC(); .. jenže potom když se z hlavního okna zavolá třeba nějaký MessageBox, tak se mi nezobrazí. Pakliže použiju pro získání kontextu zařízení:
[quote]PAINTSTRUCT ps;
RECT rc;
GetClientRect(&rc);
HDC hdc = BeginPaint(&ps);

EndPaint(&ps);
[/quote]
tak to funguje, ale připadá mi to divné.. btw. tento kód používám v hlavním okně při volání WM_PAINT.
takže otázka: Je to tak správně? Pokud ne, tak jak na to. A taky by mě zajímalo, jestli bych při otm nějak využil strukturu ATL_DRAWINFO.

Snad to dává smysl.

Citovat příspěvek

 

Re: ATL win32 podokno

Autor: RadekChalupa

6:49:44 11.01.2010

Např. takhle si vytvoříš třídu pro vlastní tlačítko:

[code]
class MujButton : public CWindowImpl < MujButton >
{
public:
DECLARE_WND_SUPERCLASS(L"MujButton", WC_BUTTONW)
private:
BEGIN_MSG_MAP(MujButton)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
END_MSG_MAP()
private:
LRESULT OnSetCursor(UINT, WPARAM, LPARAM, BOOL&)
{
SetCursor(LoadCursor(NULL, IDC_HAND));
return TRUE;
}
};
[/code]

Pak jako členskou proměnnou třídy hl. okna:
private:
MujButton button;

A po vytvoření hl. okna vytvoříš button:
[code]
RECT rect = {10, 10, 90, 38};
this->button.Create(m_hWnd, rect, L"Tlačítko", WS_CHILD | WS_VISIBLE, 0, IDC_MUJBUTTON);
this->button.SetFont((HFONT)GetStockObject(DEFAULT_GUI_FONT));
[/code]

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

 

Re: ATL win32 podokno

Autor: Bufo

23:12:22 10.01.2010

Z té knihy dokonce čerpám, ale tohle se mi nedaří pochopit. Dejme tomu třeba ta třída vlastního tlačítka, kde se po najetí myší změní kurzor.. vytvořím si objekt té třídy, ale co dál s ním? Zkoušel sem Create() a podobně, ale nikde nic..

Citovat příspěvek

 

Re: ATL win32 podokno

Autor: RadekChalupa

20:50:06 10.01.2010

Když si stáhneš ukázkové projekty k téhle knize najdeš tam určitě konkrétní ukázku řešení -> http://www.radekchalupa.cz/knihy/atl/

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 win32 podokno

Autor: Bufo

19:14:20 10.01.2010

Jak mohu ve win32 aplikaci psanou pomocí ATL vytvořit například openGL podokno hlavního okna aplikace? nebo nějaké tlačítko, ale ne přes dialog.. zkoušim vytvořit vlastní třídu, ale nevím, jak ji pak použít.

Citovat příspěvek

 

 

 

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

Uživatelské jméno:

Heslo: