Skocz do zawartości

Hoax

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Hoax's Achievements

Newbie

Newbie (1/14)

0

Reputacja

  1. Właśnie jestem w trakcie pisania edytoru tekstowego, ale chcę go całokowicie napisać jako program orientowany obiektowo. Przez to pojawił mi się mały (albo duży) problem. Otóż mam m.in. takie dwa pliki (przedstawię tylko fragmnety): <code> ### class.h ### #include <windows.h> class edytor { private: HWND *hWnd, *hEdit; public: edytor(HWND*, HWND*); bool WczytajPlik(bool text); DWORD CALLBACK StreamInProc(DWORD dwCookie, LPBYTE lpBuffer, LONG lSize, LONG * plRead); }; </code> <code> ### class.cpp ### #include "class.h" #include <richedit.h> edytor:: edytor(HWND* UchwytOkna, HWND* UchwytEdita) { hWnd = UchwytOkna; hEdit = UchwytEdita; } DWORD CALLBACK edytor:: StreamInProc(DWORD dwCookie, LPBYTE lpBuffer, LONG lSize, LONG * plRead) { if(!lSize) return(1) ; *plRead = 0 ; ReadFile((HANDLE) dwCookie, lpBuffer, lSize, (DWORD *) plRead, NULL ) ; return(0) ; } bool edytor:: WczytajPlik(bool text) { HANDLE hPlik ; EDITSTREAM es ; LONG lOut ; hPlik = CreateFile("c:/tekst.txt", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ) ; if(hPlik == INVALID_HANDLE_VALUE) return(FALSE) ; es.dwCookie = (DWORD) hPlik ; es.dwError = 0 ; es.pfnCallback = (EDITSTREAMCALLBACK)StreamInProc ; if(text) lOut = SendMessage(*hEdit, EM_STREAMIN, SF_TEXT, (LPARAM) &es) ; else lOut = SendMessage(*hEdit, EM_STREAMIN, SF_RTF, (LPARAM) &es) ; CloseHandle(hPlik) ; } </code> Każdy na pewno się domyślił, że w pierwszym jest deklaracja klasy (tzn. w class.h), a w drugim (tzn. class.cpp) zamieszczone są definicje funkcji składowych tej klasy. I właśnie z jedną z funkcji składowych mam problem, a mianowicie z funkcją (chyba tak to się nazywa) zwrotną - 'DWORD CALLBACK edytor:: StreamInProc(DWORD dwCookie, LPBYTE lpBuffer, LONG lSize, LONG * plRead)'. Gdy nie jest funkcją składową klasy 'edytor', to wszysko działa, ale gdy ją włączam do tej klasy wychodzi mi błąd "d:C++edytor2class.cpp(34) : error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'EDITSTREAMCALLBACK' None of the functions with this name in scope match the target type" - to chyba chodzi o to że nie wie jak rzutować to funkcję na EDITSTREAMCALLBACK, ale przedtem przecież wiedział. Jak to zrobić żeby działało?? PS. Podziękowania dla wytrwałych, którzy dotarli do końca tego przydługawego art'u. Z góry dzięki za wszelkie odpowiedzi.
  2. Ja mam pytanko: 'Czy książka do której prowadzi ten link: https://www.lideria.pl/sklep/opis?nr=118 jest o WinAPI w C++ czy jakimś innym języku??
  3. Hoax

    LoadIcon

    Dzieki wszystkim za zaangażowanie w mój problem, a szczególnie codeguy'owi i RafalS'owi. Po setkach nie udanych prób udało mi się załadować tę ikonę. Great thanks!! :D
  4. Hoax

    LoadIcon

    A jak coś takiego zrobić w Dev-C++??
×
×
  • Utwórz nowe...