AfxBeginThread

  • 12 Odpowiedzi
  • 2337 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline lemkat

  • ***
  • 257
  • Płeć: Mężczyzna
    • http://www.lemkat.webd.pl
  • Sprzęt: HTC HD2
AfxBeginThread
« dnia: 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

*

Offline darekkot

  • ****
  • 705
  • Sprzęt: Acer n311,HTC Touch Pro
AfxBeginThread
« Odpowiedź #1 dnia: Październik 09, 2005, 22:50:52 »
Kompilator oczekuje, ze dostanie wskaznik do globalnej funkcji, a ty mu podajesz funkcje skladowa klasy.
Musisz zadeklarowac te funkcje jako globalna.
HTC Touch Pro,ROM: Lite v.3.0 by qsqa,Radio: 1.02.25.28

*

Offline lemkat

  • ***
  • 257
  • Płeć: Mężczyzna
    • http://www.lemkat.webd.pl
  • Sprzęt: HTC HD2
AfxBeginThread
« Odpowiedź #2 dnia: Październik 09, 2005, 23:34:49 »
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 *)'

*

Offline timokie

  • ****
  • 610
  • Sprzęt: Loox C550
AfxBeginThread
« Odpowiedź #3 dnia: Październik 10, 2005, 00:40:46 »
Zadeklaruj funkcje albo jako globalna (poza klasa), albo jako funkcje statyczna w obrebie klasy (static UINT MyProc ... ), a uruchamiajac watek:
AfxBeginThread ((AFX_THREADPROC)MyProc, ... );

*

Offline MacBirdie

  • *****
  • 1943
  • Płeć: Mężczyzna
  • I znów Poznań ;)
    • macbirdie.net
  • Sprzęt: iPhone 4 16GB | iPad 3G 64GB | iPhone 3G 8GB
AfxBeginThread
« Odpowiedź #4 dnia: Październik 10, 2005, 00:45:03 »
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* ;)

*

Offline lemkat

  • ***
  • 257
  • Płeć: Mężczyzna
    • http://www.lemkat.webd.pl
  • Sprzęt: HTC HD2
AfxBeginThread
« Odpowiedź #5 dnia: Październik 10, 2005, 19:58:18 »
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 );

*

Offline darekkot

  • ****
  • 705
  • Sprzęt: Acer n311,HTC Touch Pro
AfxBeginThread
« Odpowiedź #6 dnia: Październik 10, 2005, 23:15:27 »
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 .....
HTC Touch Pro,ROM: Lite v.3.0 by qsqa,Radio: 1.02.25.28

*

Offline lemkat

  • ***
  • 257
  • Płeć: Mężczyzna
    • http://www.lemkat.webd.pl
  • Sprzęt: HTC HD2
AfxBeginThread
« Odpowiedź #7 dnia: Październik 11, 2005, 21:59:54 »
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 ;)

*

Offline darekkot

  • ****
  • 705
  • Sprzęt: Acer n311,HTC Touch Pro
AfxBeginThread
« Odpowiedź #8 dnia: Październik 11, 2005, 22:31:50 »
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...
HTC Touch Pro,ROM: Lite v.3.0 by qsqa,Radio: 1.02.25.28

*

Offline lemkat

  • ***
  • 257
  • Płeć: Mężczyzna
    • http://www.lemkat.webd.pl
  • Sprzęt: HTC HD2
AfxBeginThread
« Odpowiedź #9 dnia: Październik 11, 2005, 22:59:54 »
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

*

Offline darekkot

  • ****
  • 705
  • Sprzęt: Acer n311,HTC Touch Pro
AfxBeginThread
« Odpowiedź #10 dnia: Październik 11, 2005, 23:14:35 »
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
HTC Touch Pro,ROM: Lite v.3.0 by qsqa,Radio: 1.02.25.28

*

Offline lemkat

  • ***
  • 257
  • Płeć: Mężczyzna
    • http://www.lemkat.webd.pl
  • Sprzęt: HTC HD2
AfxBeginThread
« Odpowiedź #11 dnia: Październik 11, 2005, 23:17:42 »
Ok mozemy odpalic nowy watek taskmanagera ;)
Jestem ciekawy jakie ludzie chcieli by miec w nim funkcje, w jakim dziale go  chcesz otworzyc ?

*

Offline darekkot

  • ****
  • 705
  • Sprzęt: Acer n311,HTC Touch Pro
AfxBeginThread
« Odpowiedź #12 dnia: Październik 11, 2005, 23:24:17 »
To Twoj pomysl i prj wiec Twoja decyzja. Mysle ze moze pocket pc?
HTC Touch Pro,ROM: Lite v.3.0 by qsqa,Radio: 1.02.25.28