Archief - C++ : WinMain in klasse?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Da Turtle

Legacy Member
Mijn vraag, ik zou willen een venster maken binnen een klasse (mijn klasse die de graphics behandeld) zodat je gewoon kan een functie compilen bv
Code:
spelleke()
{
cGraphs graphs;
graphs.Create(1024, 768, 85, 32bit);
}

zoiets bevoorbeeld en dan die functie in die klasse maakt je window handle, instance handle, ... zodat deze binnen de klasse kan blijven en makkelijk deze klasse kan gebruiken zonder gebruik te moeten maken van een winMain functie. Ik heb dit geprobeerd maar ik krijg errors en ik zou willen weten als dit wel mogelijk is. Want dit niet mogelijk is was ik al de hele tijd voor niks bezig :D

killgore

Legacy Member
onlangs voort zelfde probleem gestaan:

-ik heb (in deze toepassing althans :p) nog geen enkel prob ivm hinstances gekend, gewoon op NULL zetten dus :p.

wlibaers

Legacy Member
Winmain kan niet in een klasse zitten (tenzij misschien als je een compiler zou hebben die toelaat static member functions als extern "c" te compileren, maar dat is strikt theoretisch - en bovendien vrij nutteloos).

Da Turtle

Legacy Member
Ik wil niet echt een winMain in een klasse, ik gebruikte dat gewoon om mijn probleem duidelijk te maken, even mijn klasse uploaden.
http://users.pandora.be/daturtle/cGFX.h
zou kunnen zijn dat ik compleet mis ben op deze manier, maar ik weet et niet. Nu wordt teminste mijn probleem duidelijk (hoop ik).

Het probleem is mss ook dat ik het probeer op te roepen binnen een main functie en dat de compiler dit verkeerd interpreteerd.
Code:
main()
{
cGFX *cGraphs = new cGFX();

	cGraphs->initWindow(800, 600, bit32, false, 60);

return 0;
}

hetgene niet werkt is het creëren van het Direct 3D object.
error : "The method call is invalid. For example, a method's parameter may have an invalid value."

QplQyer

Legacy Member
Kan je niet gewoon doen:
Code:
int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline, int ncmdshow)
{
      cGFX *cGraphs = new cGFX();
       cGraphs->initWindow(800,600, bit32, false,60);
}

En dan in de constructor van cGFX() ofzo:

Code:
WNDCLASSEX nieuweclass;

nieuweclass.lpfnWndProc = WindowProc;
nieuweclass.lpszClassName = Mijn_Nieuwe_Win_Class;
// vul hier de rest van de struct in

// registreren van de class
if(!RegisterClassEx(&winclass))
    return(0);

en dan in initWindow:

Code:
void initWindow(int width, int height, Class something, BOOL something, int something)
{
if(!(hwnd=CreateWindowEx(NULL,Mijn_Nieuwe_Win_Class,"titel",WS_OVERLAPPEDWINDOW | WS_VISIBLE,0,0,width,height,NULL,NULL,hinstance,NULL);
    return(0);

Dat zou toch moeten doen wat je wilt denk ik?

Da Turtle

Legacy Member
*EDIT wie mijn vorige post gelezen had, tis nog niet opgelost, nu heb ik alleen het probleem als er full screen gebruikt wordt.

Da Turtle

Legacy Member
Mijn D3DPRESENT_PARAMETERS voor full screen waren verkeerd, dit is nu opgelost, dus geen problemen meer, toch thx voor de reply's iederen ;).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan