PDAclub.pl - Forum użytkowników technologii mobilnych
Windows Mobile (Classic, Professional, Standard), Windows Phone 6.x oraz 7/8.x/10 => Oprogramowanie PPC => Dla programistów => Wątek zaczęty przez: lemkat w Październik 09, 2005, 21:35:44
-
Witam
Czy ktos moze mi powiedziec o co biega kompilatorowi.
Mam skladowa funkcje klasy:
class CTest001Dlg : public CDialog
{
....
UINT MyProc( LPVOID pParam );
....
};
i teraz w funkcji chce utworzyc proces:
BOOL CTest001Dlg::OnInitDialog()
{
....
AfxBeginThread( MyProc, NULL,THREAD_PRIORITY_NORMAL,0,0,NULL );
....
}
a kompilator sie burze ze pierwszy argument jest nieprawidlowy
D:\programowanie\WindowsCE\test001\test001Dlg.cpp(66) : error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
prubowalem tez umiesic funkcje poza klasa ale problem jest ten sam
-
Kompilator oczekuje, ze dostanie wskaznik do globalnej funkcji, a ty mu podajesz funkcje skladowa klasy.
Musisz zadeklarowac te funkcje jako globalna.
-
Tak jak juz pisalem ta funkcja byla rownierz deklarowana poza klasa jako funkcja globalna i problem byl ten sam.
Wedlug kompilatora typ funkcji jest nieprawidlowy UINT a kompilator chce void*
ale z dokumentacji wynika ze funkcja powinna byc zdeklarowana jako UINT ;(
Jakas totalna bzdura jak zmienilem typ funkcji na LPVOID to kompilator wysypal
D:\programowanie\WindowsCE\test002\test002Dlg.cpp(65) : error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'void *(void *)'
-
Zadeklaruj funkcje albo jako globalna (poza klasa), albo jako funkcje statyczna w obrebie klasy (static UINT MyProc ... ), a uruchamiajac watek:
AfxBeginThread ((AFX_THREADPROC)MyProc, ... );
-
Właśnie - typ zwracany przez MyProc, to jedno, a typ wskaźnika, jaki do niej podajesz, to inna sprawa. Zapewne AFX_THREADPROC to typedef czegoś a'la void* ;)
-
Proces juz moge utworzyc tylko jest maly problem, w tym procesie chce operowac na zmiennych typu int reprezentujacych edit box i bedacych skladnikiem tej klasy. Jesli funkcja jest zdeklarowana w klasie to jest typu static wiec moze operowac na zmiennych typu static a te zmienne nie sa static. Jak zdeklarowalem funkcje na zewnatrz poza klasa tak ze nie byla static i wewnatrz utworzylem obiekt reprezentujacy klase i tam zmienniam zmienne to wszystko sie kompiluje ale w momencie uruchomienia aplikacji mam error "Unsupportet operation".
;(
Ogolnie idea jest taka:
Mam na formie utworzone dwie kontrolki Edit box do nich sa przypisane zmiennet typu int m_AllMemory i m_FreeMemory.
Teraz potrzebuje utworzyc proces ktory np co 2 sek. sprawdza stan pamieci i zapisuje je do zmiennych m_AllMemory i m_FreeMemory a nastepnie updatuje dane przy uzyciu UpdateData( false );
-
Trzeba zastosowac trick. Jednym z parametrow funkcji jest (LPVOID pParam) W wywolaniu uzyj w miejscu tego parametru this. Nastepnie na poczatku funkcji zrzutuj ten parametr na wskaznik do twojej klasy i ... juz mozesz korzystac ze skaldnikow klasy. Niestety tylko publicznych. Aby to obejsc, musialbys dziedziczyc od tej klasy .....
-
Witam
Dzieki za pomoc, zadzialalo ;) jesli ktos ma ochote rzucic okiem na program to zapraszam: http://www.lemkat.hotshoot.webd.pl
dzial programy a tam ProcManager
Pozdrawiam i do zobaczenia przy nastepnym poscie ;)
-
Fajnie, tylko czemu wersja jest na tak egzotyczny procek?
Moze zrobimy liste zyczen co do wymazonego taskmanagera i wspolnie cos takiego stworzymy? Szkielet juz jest. Ja od dawna szukam... Poki co korzystam z wisbara, ale moze Twoj bedzie lepszy...
-
Odpowiedz na twoje pytanko co do procka jest dos prozaiczna a mianowicie mam starego poketa wlasnie z tym prockiem i tylko na takim pokecie moge potestowac sofick. Co do stworzenia jakiegos projektu to jestem otwarty na wszelkie propozycje.
Pozdrawiam
-
No to ja moge testowac, pomoc w pisaniu fragmentow kodu oraz wymyslec jak powinien dzialac moj wymazony taskmanager. Czekamy na innych chetnych. Moze lepiej by bylo otworzyc nowy watek np. moj wymazony taskmanager, bo do tego dzialu zaglada tylko garstka zakreconych
Juz sie ciesze na nowego task manager-a. A moze tez wersja dla smartphone?
Pozdrowiam
-
Ok mozemy odpalic nowy watek taskmanagera ;)
Jestem ciekawy jakie ludzie chcieli by miec w nim funkcje, w jakim dziale go chcesz otworzyc ?
-
To Twoj pomysl i prj wiec Twoja decyzja. Mysle ze moze pocket pc?