Gość Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 Witam. Skoro przenieśliście mnie na forum, to tutaj piszę. Mam projekt DLL. Mam tam exportowane funkcje, i samo to działa. Ale kiedy uzywam funkcji GetWindowLong, podkreśla się ona i jest napisane: Error: this declaration has no storage class or type specifier. Funkcja jest w samej DLLce, bez żadnej exportowanej funkcji (tak jakbym sobie ją luzem wrzucił). Mam zaincludowane Windows.h . Uzywam Visual C++ 2010 Express Edition. Z góry dzięki za pomoc :) Pozdrawiam. E: Jeżeli potrzeba jeszcze jakichś informacji, to napiszcie jakich. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 E: Jeżeli potrzeba jeszcze jakichś informacji, to napiszcie jakich. podaj kawałek swojego kodu bo raczej kod źródłowy GetWindowLong nie jest źle napisany :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 #include <Windows.h> #define exportdll extern "C" __declspec(dllexport) HWND m_hWnd; UINT m_uMsg; WPARAM m_wParam; LPARAM m_lParam; double ClickedHandle; double ClickedItem; /* Tutaj funkcje. exportdll Funkcja(...) - nie podaje tych funkcji bo to jest chyba niepotrzebne. m_hWnd - wartość tej zmiennej jest definowana przez funkcje, także wszystko ok. */ GetWindowLong(m_hWnd, GWL_WNDPROC); Coś więcej? E: Nie powinienem czasem od razu wywołać funkcji CallWindowProc? Jednak nie. E2: Na końcu dopisałem: LRESULT WINAPI CallWindowProc(WNDPROC lpPrevWndFunc, HWND m_hWnd, UINT m_uMsg, WPARAM m_wParam, LPARAM m_lParam) { if (m_uMsg == WM_MENUCOMMAND) { ClickedItem = (double)m_wParam; ClickedHandle = (double)m_lParam; } return 0; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 26 Sierpnia 2010 Administratorzy Udostępnij Opublikowano 26 Sierpnia 2010 a przed definicją funkcji nie trzeba podać typu jaki ona zwraca ? Nie wiem jak to w C++ wygląda, ale chyba tez? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 pokaż jak używasz GetWindowLong(m_hWnd, GWL_WNDPROC); czy jest sobie gdzieś tam w kodzie bez funkcji? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 Jest sobie tak luzem w kodzie, bez funkcji. gnysek: Przy używaniu innych funkcji, jeśli nie pobieram zwróconej wartości, nie dopisuje typu jaki zwraca. Czyli void jest domyślny? Ok, w takim razie moja wiedza na temat tego problemu się tutaj konczy. gnysek Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 ale wiesz co ci powiem? Może się mylę, ale o ile wiem to to co jest w dll'ce i nie jest opakowane w funkcje to że tak powiem: nie działa :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mipo57 Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 a przed definicją funkcji nie trzeba podać typu jaki ona zwraca ? Nie wiem jak to w C++ wygląda, ale chyba tez? przed definicją trzeba, ale... Czyli void jest domyślny? Ok, w takim razie moja wiedza na temat tego problemu się tutaj konczy. ...przy używaniu nie trzeba. btw. to bez sensu tak wrzucić kod gdzieś luzem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 btw. to bez sensu tak wrzucić kod gdzieś luzem i to LRESULT WINAPI CallWindowProc(WNDPROC lpPrevWndFunc, HWND m_hWnd, UINT m_uMsg, WPARAM m_wParam, LPARAM m_lParam) { if (m_uMsg == WM_MENUCOMMAND) { ClickedItem = (double)m_wParam; ClickedHandle = (double)m_lParam; } return 0; } też bym opakował :] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 #include <Windows.h> #define exportdll extern "C" __declspec(dllexport) HWND m_hWnd; UINT m_uMsg; WPARAM m_wParam; LPARAM m_lParam; double ClickedHandle; double ClickedItem; /* Tutaj funkcje. exportdll Funkcja(...) - nie podaje tych funkcji bo to jest chyba niepotrzebne. m_hWnd - wartość tej zmiennej jest definowana przez funkcje, także wszystko ok. */ GetWindowLong(m_hWnd, GWL_WNDPROC); nie można dawać przecież wykonania funkcji poza main/winmain/dllmain lub inną funkcją. Wywołanie funkcji musi znajdować się w ciele innej funkcji Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 26 Sierpnia 2010 Udostępnij Opublikowano 26 Sierpnia 2010 Wywołanie funkcji musi znajdować się w ciele innej funkcji no właśnie :D To tak jak z sexem...eeee... a w sumie to inaczej :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się