Oprettet lør. d. 17. januar 2004 kl. 16:10:43

mikkeljans
mikkeljans (14.533 point. Point ude: 1.795)

Visual C++ OpenGL MUS

Hvordan laver man en bool der er True hvis Venstre/Midter/Højre museknap bliver trykket?.. Og False når man giver slip..
Og hvordan forøger man en float variabel når musen bliver rykket i en bestemt retning?

Har Visual C++ ikke nogen indbygget functioner man kan få en liste over eller noget?
Eller findes der en web side hvor man kan få en liste over de forskelle windows funktioner og hvad de bruges til?

Skrevet lør. d. 17. januar 2004 kl. 17:46:01| #1

soreno
soreno (72.221 point)
MSDN indeholder alt den dokumentation du skal bruge.

Spørgsmålet er bare at finde det.

Siden findes her: msdn.microsoft.com


Du skal kigge lidt på WM_MOUSE*, f.eks.
http://msdn.microsoft.com/ (...)

Skrevet lør. d. 17. januar 2004 kl. 18:27:18| #2

mikkeljans
mikkeljans (14.533 point)
Burde jeg så ikke kunne sige..

if(WM_MBUTTONDOWN)
{
kode..
}

??
Gør jeg det kører koden hele tiden selvom musen ikke er trykket ned

Skrevet lør. d. 17. januar 2004 kl. 18:30:45| #3

soreno
soreno (72.221 point)
Du er nok nødt til at poste lidt mere kode. Det er svært at genneskue hvad du laver ud fra den bid du har sendt.

Princippet er at din message callback metode håndterer det. Den plejer at være bygge op vha. en switch/case konstruktion.

Lige for at få det på det rene, er det MFC eller Win32 du bruger ?

Skrevet lør. d. 17. januar 2004 kl. 18:37:25| #4

mikkeljans
mikkeljans (14.533 point)
Ved jeg ikke...
Jeg programmere i OpenGL.
Jeg har loop der kører konstant og tegne mit OpenGL billede.. Og inde i den loop er der nogen "if" der styrer forskellige ting i mit program.
Det virker fint med Keybord f.eks:
            if (keys[VK_LEFT])
            {
                    degreesLR += 3;

            }
Den kode kører når jeg holder Pil til venstre nede..
Men jeg vil gerne have musen skal styrer det... På en eller anden måde

Det hele inden for den funktion ser sådan her ud:
int WINAPI WinMain(    HINSTANCE    hInstance,            // Instance
                    HINSTANCE    hPrevInstance,        // Previous Instance
                    LPSTR        lpCmdLine,            // Command Line Parameters
                    int            nCmdShow)            // Window Show State
{
    MSG        msg;                                    // Windows Message Structure
    BOOL    done=FALSE;                                // Bool Variable To Exit Loop

    // Create Our OpenGL Window
    if (!CreateGLWindow("Poly Modeller",700,500,16,fullscreen))
    {
        return 0;                                    // Quit If Window Was Not Created
    }

    while(!done)                                    // Loop That Runs While done=FALSE
    {
        if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))    // Is There A Message Waiting?
        {
            if (msg.message==WM_QUIT)                // Have We Received A Quit Message?
            {
                done=TRUE;                            // If So done=TRUE
            }
            else                                    // If Not, Deal With Window Messages
            {
                TranslateMessage(&msg);                // Translate The Message
                DispatchMessage(&msg);                // Dispatch The Message
            }
        }
        else                                        // If There Are No Messages
        {
            // Draw The Scene.  Watch For ESC Key And Quit Messages From DrawGLScene()
            if ((active && !DrawGLScene()) || keys[VK_ESCAPE])    // Active?  Was There A Quit Received?
            {
                done=TRUE;                            // ESC or DrawGLScene Signalled A Quit
            }
            else                                    // Not Time To Quit, Update Screen
            {
                SwapBuffers(hDC);                    // Swap Buffers (Double Buffering)
            }

            if (keys[VK_F1])                        // Is F1 Being Pressed?
            {
                keys[VK_F1]=FALSE;                    // If So Make Key FALSE
                KillGLWindow();                        // Kill Our Current Window
                fullscreen=!fullscreen;                // Toggle Fullscreen / Windowed Mode
                // Recreate Our OpenGL Window
                if (!CreateGLWindow("NeHe's Solid Object Tutorial",640,480,16,fullscreen))
                {
                    return 0;                        // Quit If Window Was Not Created
                }
            }

            if (WM_LBUTTONDOWN)
            {
                    degreesLR -= 3;

            }           
           
            if (keys[VK_LEFT])
            {
                    degreesLR += 3;

            }           
           
            if (keys[VK_UP])
            {
                    degreesUP += 3;

            }

            if (keys[VK_DOWN])
            {
                    degreesUP -= 3;

            }

            if (keys['Q'])
            {
                zoom = (float)zoom / 1.07;
            }

            if (keys['A'])
            {
                zoom = (float)zoom * 1.07;
            }

            if (keys['I'])
            {
                yPos += 0.1;
            }

            if (keys['K'])
            {
                yPos -= 0.1;
            }

            if (keys['J'])
            {
                xPos -= 0.1;
            }

            if (keys['L'])
            {
                xPos += 0.1;
            }



        /*    if ()
            {
                zoom = zoom * 1.001;
            }

*/

        }
    }

    // Shutdown
    KillGLWindow();                                    // Kill The Window
    return (msg.wParam);                            // Exit The Program
}

Skrevet lør. d. 17. januar 2004 kl. 18:47:09| #5

soreno
soreno (72.221 point)
Prøv at starte med at læse tutorial [1-4] på denne side:
http://www.winprog.org/ (...)

Det giver en ide om hvad et event er og hvordan man håndterer det.

Jeg synes faktisk at ovenstående kode er unødig kompliseret (men sådan synes jeg generelt om "nehe"'s kode..).

Skrevet lør. d. 17. januar 2004 kl. 19:03:42| #6

mikkeljans
mikkeljans (14.533 point)
Tak.. jeg prøver at se på den Tutorial

Det var muligt at lave at få de ttil at virke ud fra en anden variabel med koden:
        case WM_LBUTTONUP:
            isClicked  = false;
            break;
        case WM_RBUTTONUP:
            isRClicked  = false;
            break;
        case WM_LBUTTONDOWN:
            isClicked  = true;
            break;
        case WM_RBUTTONDOWN:
            isRClicked  = true;
            break;

Hvad er det "Messages" sådan kort fortalt til?
Hvorfor har man ikke bare lavet f.eks WM_LBUTTONUP til en bool der enten er sand eller falsk efter om knappen er nede eller oppe?

Skrevet lør. d. 17. januar 2004 kl. 19:07:51| #7

soreno
soreno (72.221 point)
Windows programmer virker ved at Operativ Systemet sender Messages når det påkræves (f.eks. at der skal repaintes, musen bevæges osv.).

Programmet bestemmer så selv hvad der skal gøres når en Message modtages, det gøres typisk i en callback metode.

Pointen er at programmet først behøver at reagere når en Message modtages, dermed spares resourcer da programmet ikke bruger unødig cputid på ingen ting.

Skrevet lør. d. 17. januar 2004 kl. 19:13:22| #8

mikkeljans
mikkeljans (14.533 point)
Okay Tak for hjælpen.

Skrevet lør. d. 17. januar 2004 kl. 19:20:43| #9

soreno
soreno (72.221 point)
Fik du svar nok på dit spørgsmål ?

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Updater Hybrid App

Oprettet den 18. april 2012 kl. 13.29
sir_madsen giver 100 point for svar | Giv et svar »

Ansi-c win32API - kan ikke oprette Richedit4.1 kontrol

Oprettet den 16. april 2012 kl. 22.13
cblcbl giver 60 point for svar | Giv et svar »

Iphone Objective C - Sætte image på et imageview.

Oprettet den 7. april 2012 kl. 11.36
lasserasch giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger