Avatar billede d34c0n Praktikant
04. november 2002 - 14:36 Der er 8 kommentarer og
1 løsning

Lidt WinAPI...

Heysa.

Det jeg skal lave, er noget der udregner RGB-farveværdien til OpenGL. Dette gøres ved at dividere med 255. F.eks.: 155 / 255.

Nu har jeg lavet 6 edit-felter. I de 3 første, skal man indtaste den rigtige RGB-værdi - i de 3 sidste viser den resultatet for hver enkelt.
Dvs. at hvis jeg skrev 127,5 (halvdelen af 255). så ville den skrive 0.5 i felt 4.

Jeg bruger MSVC++ 6.0, og værdien skal være float, og den skal kun vise de første 4 cifre i de 3 sidste edit-felte.
Nogen der kan hjælpe mig?
Takker ;-)
Avatar billede jpk Nybegynder
04. november 2002 - 14:57 #1
Sagtens, men hvad er det du vil have, et færdigt projekt eller hjælp til nogle af tingene..?
Avatar billede d34c0n Praktikant
04. november 2002 - 15:24 #2
Jeg er lige glad. Hvis du vil lave et færdigt projekt kan du sende til deacon@macrotech.dk ...

ellers mangler jeg bare kode.
Avatar billede jpk Nybegynder
04. november 2002 - 15:50 #3
Må der anvendes MFC?
Avatar billede soreno Praktikant
04. november 2002 - 16:02 #4
måske jeg sprøger dumt, men hvorfor ikke bare benytte de metoder som OpenGL stiller til rådighed ?
istedet for eks.
glColor3f(1.0f, 0.034f, 0.123f);

kunne du jo bruge
void glColor3b(255, 123, 0);

se definitionerne:
void glColor3b(
  GLbyte red,   
  GLbyte green, 
  GLbyte blue   
);

void glColor4b(
  GLbyte red,   
  GLbyte green, 
  GLbyte blue, 
  GLbyte alpha 
);
Avatar billede d34c0n Praktikant
04. november 2002 - 17:04 #5
Jeg skal bruge x.xf!
jpk> hvis du laver projektet, ja :)
Avatar billede d34c0n Praktikant
04. november 2002 - 18:41 #6
jpk > lav et svar og sendt source :-)
Avatar billede jpk Nybegynder
05. november 2002 - 08:44 #7
Okay, jeg har sendt sourcen.
For en god ordens skyld, vil jeg lige vise koden her...

Til dialogens message map har jeg tilføjet:
ON_CONTROL_RANGE(EN_CHANGE, IDC_R, IDC_B, OnChange)

Det bevirker at funktionen OnChange kaldes når en af de 3 edit-felters indhold ændres (EN_CHANGE). De er defineret lige efter hinanden i resource-filen med navnene IDC_R, IDC_G og IDC_B.

I headerfilen er funktionen erklæret sådan:
afx_msg void OnChange(UINT nID);

Implementationen af OnChange ser således ud:
void CRGBNormalizeDlg::OnChange(UINT nID)
{
    CString csNumber;
    GetDlgItem(nID)->GetWindowText(csNumber); // Get the text for the edit that changed
    csNumber.Replace(',', '.'); // So that we can use both '.' and ',' as decimal seperator
    double dNormalized = atof(csNumber) / 255.0; // Calculate the normalized coler value
    csNumber.Format("%.3f", dNormalized); // Format the output with 3 decimals
    GetDlgItem(nID+3)->SetWindowText(csNumber); // Set the text...
}


Og det er faktisk det...
Avatar billede jpk Nybegynder
05. november 2002 - 08:48 #8
d34c0n, Når jeg går ind på din/jeres site, får jeg følgende fejlmeddelelse:

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
Avatar billede d34c0n Praktikant
05. november 2002 - 14:53 #9
Ja det ved jeg godt :-)
Det er pga. at jeg ikke har sat PHP-siden ind, som den mangler!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester