Keskustelut - C/C++ - Olenko koodannut väärin? (lukittu) [1 / 2]


Sivu: 1, 2
seuraava sivu » 
editoitu: 14:55 29.8.04
C++ - Quru 14:54 29.8.04 
siis nyt mun ohjelmassa on virheitä (taas) siis kaksi ja ne on


error C2065: 'font' : undeclared identifier
error C2440: '=' : cannot convert from 'struct HFONT__ *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast



olen kirjoittamassa tekstiä Windows punaisella värillä ikkunaani... mutta nuo virheet stoppaavat tien...

tässä on koodi mikä aiheuttaa tuon virheen:


LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
 
             HFONT old;
             RECT rc;
             LOGFONT lf;
             int x, y;
             PAINTSTRUCT ps;
             HDC hdc;
             font;
         
   
    static HWND hwndBeep, hwndPush; // kahvamuuttujia

   switch (iMsg) // sanomien käsittelyrakenne
   {
      case WM_CREATE: // initialisaatiosanoma


                 lf.lfHeight = -40;
   strcpy(lf.lfFaceName, "Arial");
                font = CreateFontIndirect(&lf);         

         
      case WM_PAINT:
           
            
          hdc = BeginPaint(hwnd, &ps);
                                    old = SelectObject(hdc, font);
          GetClientRect(hwnd, &rc);
          SetTextColor(hdc, RGB(255, 0, 0));
          DrawText(hdc, "Windows", -1, &rc,
             DT_SINGLELINE|DT_CENTER);

          SelectObject(hdc, old);
          ValidateRect(hwnd, NULL);
          EndPaint(hwnd, &ps);
          break;
             DeleteObject(font);

glaze 15:04 29.8.04 
Et antanut font-muuttujalle tyyppiä.
C++ - Quru 15:06 29.8.04 
että mitä tyyppiä ? voitko selventää ?
DragonFire 15:37 29.8.04 
Olisko HFONT... Öh?
C++ - Quru 15:40 29.8.04 
Nyt on vaan tämä virhe:


error C2440: '=' : cannot convert from 'struct HFONT__ *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast



what i supposed to do
editoitu: 15:51 29.8.04
DragonFire 15:49 29.8.04 
No ensinäkin, sulla puuttuu break; tosta WM_CREATE-messun casesta. Tai parempi on käyttää tässä tapauksessa return 0;

Edit: En tiedä oliko sitten siinä malliesimerkissä, josta kopsasit tuon koodin, tarkoitus suorittaa myös WM_PAINT WM_CREATE:n yhteydessä. Mutta enpä oikein tahdo uskoa.
editoitu: 15:55 29.8.04
C++ - Quru 15:54 29.8.04 
Ei toimi...
DragonFire 15:56 29.8.04 
No? Mitä se nyt herjaa? Laitappa erroria näkyviin. Ja laita koodiakin lisää. Ei noista erroreista tiedä, missä pirun kohtaa se on?
C++ - Quru 15:57 29.8.04 
miten saan ton virheen poijes
Liquid_Vision 16:02 29.8.04 
Laita se kohta koodia näkyviin missä tuo virhe tapahtuu. Sillon voi jotain neuvoakin antaa..
C++ - Quru 16:02 29.8.04 
huooh... okei kamut...



error C2440: '=' : cannot convert from 'struct HFONT__ *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast




se on rivillä 104 eli tagi on: old = SelectObject(hdc, font1);
editoitu: 16:04 29.8.04
DragonFire 16:04 29.8.04 
editoitu: 16:05 29.8.04
DragonFire 16:05 29.8.04 
Kokeileppa: old = SelectObject(hdc, (HGDIOBJ) font);
C++ - Quru 16:06 29.8.04 
eipä toimi
editoitu: 16:15 29.8.04
DragonFire 16:10 29.8.04 
Eiku joo joo. Nyt alkoi kelata. Kokeileppas tätä old = (HFONT) SelectObject(hdc, font);

Saattaa olla aika kaukaa haettua, mutta muuta en tähän hätään keksi.
C++ - Quru 16:21 29.8.04 
pelaa mutta teksti ei näy,eikä nappulat mitä olen siihen ohjelmoinut,huooh mitähän MINUN pitää tehdä,nyt ei teidän välttämättä tarvitse auttaa
akx 17:51 29.8.04 
Ikkunaan ei AFAIK pitäisi piirtää suoraan jos siinä on jotain muuta tavaraa.
weicco 20:58 29.8.04 
Voi jeesus nasaretilainen kumiristillä..

a) et ole määritellyt font - muuttujaa (sama vika kuin aikaisemmissa kysymyksissäsi)
b) toinen virhe tulee siitä, kun kääntäjä kuvittelee font - muuttujaa int tyyppiseksi
c) opettele niiden switch - casejen käyttö, opastin jo kertaalleen miten se tapahtuu, mutta sisälukutaito ei taida kuulua parhaimpiin puoliisi
weicco 21:00 29.8.04 
akx kirjoitti:
Ikkunaan ei AFAIK pitäisi piirtää suoraan jos siinä on jotain muuta tavaraa.


Mihinkäs sitten? BeginPaint tyhjentää kyllä piirtoalueen (tai ei välttämättä, mutta luulisin, että tässä tapauksessa), jotenka piirtäminen onnistuu sitten aivan mainiosti. Jos ikkunassa on jotain kontrolleja, ne kyllä piirtelevät sitten itsensä jotenka niistä ei tarvitse huolehtia.
C++ - Quru 21:18 29.8.04 
siis... nyt ei kyllä raksuta... mutta olen tyhmä,mionkäs sille mahtaa ?! :O
seuraava sivu »