Skocz do zawartości

Podkreślona funkcja GetWindowLong


Bedi

Rekomendowane odpowiedzi

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

#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

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

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

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

#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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...