WinProc ve třídě – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

WinProc ve třídě – C / C++ – Fórum – Programujte.comWinProc ve třídě – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
ingiraxo+15
Grafoman
15. 9. 2012   #1
-
0
-

Cau, mám menší dotaz... chci dát WinProc do třídy, ale aby funkce nebyla statická, protože v ni potřebuju volat funkce ze třídy

v tomhle není problém, ale hlavní problém je, že pokud ve třídě vytvořím WndClass (WNDCLASSEX), tak on požaduju ukazatel na WndProc a pokud ho mám ve třídě, tak to házi chybu o úrovni... a nevim jak bych to měl řešit, aby to takto šlo.. mít WinProc ve třídě a přitom v té samé třídě vytvářet okno

ve WinMain chci mít pouze instanci třídy s funkcí Show()

zatim to mám řešený takto, ale jen by mě zajímalo, jestli by to šlo nějak jinak, aby v main.cpp bylo pouze WndMain a vše ostatní ve třídě 

static MyInstance* instance = new MyInstance();

static LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	return instance->WindowProc(hwnd, msg, wParam, lParam);
}

int WinMain(...) { ... }

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
bob
~ Anonymní uživatel
46 příspěvků
15. 9. 2012   #2
-
0
-

nevim jestli ti to pomuze, ale

http://www.zezula.net/…v_tride.html

a jeste dovysvetleni

The Win32 API is defined to be C compatible.  So the wndproc must have a C calling convention so Win32 can call it.

Ordinary C++ member functions have a 'this' parameter that makes them incompatible with a C calling convention.  But a static C++ member function does not have a 'this' parameter and is compatible with a C calling convention.

Nahlásit jako SPAM
IP: 95.82.154.–
ingiraxo+15
Grafoman
15. 9. 2012   #3
-
0
-

jo, dík.. přes Get/SetWindowLongPtr to funguje jak jsem chtěl :)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
liborb
~ Redaktor
+18
Guru
17. 9. 2012   #4
-
0
-

A dále se můžeš inspirovat i zde  

Nahlásit jako SPAM
IP: 78.80.52.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

Přístup ke třídě — založil Tom

Operator[] ve tride — založil fnenks

Třída ve třídě, C++ — založil Luu

Funkce ve třídě — založil twigl

String ve třídě — založil eidam1995

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý