Statyczna metoda CALLBACK dostęp do składników klasy

0

Witam.

W klasie mam zdefiniowaną statyczną metodę CALLBACK odpowiedzialną za wyświetlanie okienka dialogowego:

static BOOL CALLBACK DlgToInstallProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam);
BOOL TEST::DlgToInstallProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
	static  HWND defCancelButton;

	switch (Msg)
	{
		case WM_INITDIALOG:
		{
			defCancelButton = GetDlgItem(hwnd, IDC_DEFCANCEL);

	
			if(isRequest == true)
				SetWindowText(defCancelButton, "Cancel");
			else
				SetWindowText(defCancelButton, "Defer");

		}
		break;

		case WM_COMMAND:
		{
			switch (LOWORD(wParam))
			{
				case IDC_INSTALL: 

					EndDialog (hwnd, IDOK); 

					break;
		    }
		}
		break;

		default: return FALSE;
	}

	return TRUE;
}

Czy istnieje jakiś sposób, aby z poziomu tej metody statycznej dostać się do składników klasy?

W chwili obecnej, gdy próbuje sprawdzić wartość składnika klasy Test:

if(isRequest == true)

otrzymuję błąd kompilacji:

error C2597: illegal reference to non-static member 'TEST::isRequest'

Natomiast gdy zmienną isRequest zadeklaruję jako statyczną, otrzymuje błąd linkera:

unresolved external symbol "protected: static bool TEST::isRequest" (?isRequest@TEST@@1_NA)

Będę wdzięczny za wszelkie wskazówki.

Pozdrawiam

0

fizycznie nie ma składników klasy, są za to składniki w konkretnych obiektach. twoja statyczna metoda musi wiedzieć na którym obiekcie ma operować. możesz do callbacka przesyłać wskaźnik na obiekt

0

Udało mi się rozwiązać problem w trochę inny sposób, nie wiem czy słuszny i poprawny, ale działa.

Otóż, składnik klasy zadeklarowałem jako statyczny w samej klasie:

 
static bool			 isRequest;

, ale dodatkowo po ciele klasy dodałem jeszcze deklarację:

bool TEST::isRequest;

W ten sposób, w metodzie statycznej odwołuje się teraz do tego składnika klasy:

if(TEST::isRequest == true)

Do argumentów metody statycznej niestety nie mogę dodać nic więcej niż jest, ponieważ taka lista argumentów funkcji CALLBACK jest wymagana przez kolejną funkcję WinAPI.

0

Miałem ten sam problem i właśnie go rozwiązałem, tzn zrobił to użytkownik tego forum(adf88):

http://4programmers.net/Forum/C_i_C++/86097-C++_WinAPI_Funkcja_skladowa_klasy_jako_parametr_innej_fun?start=10

1 użytkowników online, w tym zalogowanych: 0, gości: 1