WINAPI - nie moge uzyskac HPEN

0

Jestem juz siwy... nie mam pojecia dlaczego tak jest, ale kompilator wyklada mi sie na nastepujacej linijce (kompilator VS. NET 2003):

hPenOld = SelectObject(hdc, hPen);

a blad to:
error C2440:'=': cannot convert from HGDIOBJ to HPEN :(

no i jestem zabity, bo jezeli zrobie bez odzyskiwania starego pisaka (bez "hPenOld =") to dziala, a przeciez drugim argumentem jest HGDIOBJ i jakos konwertowac sie da jednak z HPEN (zreszta to przeciez tylko liczba - uchwyt). Sprawdzalem przyklady z MSDN i to samo... :(. Co ciekawe ten sam kod kompiluje sie pod Borlandem, tylko pod VS.NET 2003 jakos nie chce. Ma ktos jakis pomysl to prosze dac znac...

0

Sprobuj tak:

hPenOld = (HPEN)SelectObject(hdc, hPen);

wyglada na to ze kompilator nie chce przeprowadzic automatycznej konwersij. To zalezy od kompilatora i dlatego pod BCB moglo dzialac.

0

To bylo wlasciwie pierwsze, co sprobowalem... ;) ... niestety bez skutku...

0
  1. To pisz w C, a nie w C++. W C++ jest ścisła kontrola typu...
  2. Poza tym, skąd ktoś ma wiedzieć jak zadeklarowałeś hPen, hPenOld?
  3. Może HGDIOBJ hPenOld (a nie HPEN hPenOld) i nie trzeba zmiany typu?
0
marcinEc napisał(a)
  1. To pisz w C, a nie w C++. W C++ jest ścisła kontrola typu...
  2. Poza tym, skąd ktoś ma wiedzieć jak zadeklarowałeś hPen, hPenOld?
  3. Może HGDIOBJ hPenOld (a nie HPEN hPenOld) i nie trzeba zmiany typu?
  1. Brak kontroli - to jest wlasnie jedna z najwiekszych (IMO) slabosci C - czasem przydatna.
    Co do zmiany na C to caly kod programu (kilkadziesiat kb) mam w C++ z wykorzystaniem m.in. klas i innych rzeczy dostepnych tylko w C++...
  2. Z komunikatu bledu...
  3. Zadalem to pytanie, bo dla mnie jest co najmniej dziwne, ze nie moge pod kompilatorem uruchomic przykladu zamieszczonego w jego helpie... i na stronie MSDN... Jak dla mnie to albo jest to ustawienie kompilatora albo nie wiem co... tylko nie moge tego ustawienia jakos znalezc...

Pozdrowienia...

0
Pianbringer napisał(a)
  1. Zadalem to pytanie, bo dla mnie jest co najmniej dziwne, ze nie moge pod kompilatorem uruchomic przykladu zamieszczonego w jego helpie... i na stronie MSDN... Jak dla mnie to albo jest to ustawienie kompilatora albo nie wiem co... tylko nie moge tego ustawienia jakos znalezc...

Dlaczego? Też właśnie to jest w C przykład, jak to WinAPI. Najdziwniejsze jest to, że (jak twierdzisz) nie działa ci bezpośrednie rzutowanie...

0

No wlasnie problem jest taki, ze rzutowanie nie dziala tylko w tym wypadku... uzywam rzutowania naprawde czesto...

Przepraszam...

Zadzialalo, jak zmienilem cos w opcjach... tylko nie wiem co (ale z rzutowaniem)...

Naprawde dziwna sprawa...

Dzieki za odpowiedzi... :)

Chyba juz za dlugo nad tym programem siedze...
(Wczesniej zmienialem cos w opcjach odnosnie traktowania warning'ow jako error'ow....)


Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1