Jak detekovat aktuální stránku? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak detekovat aktuální stránku? – C / C++ – Fórum – Programujte.comJak detekovat aktuální stránku? – C / C++ – Fórum – Programujte.com

 

oxidián0
Grafoman
10. 7. 2015   #1
-
0
-

Našel jsem dvě funkce:

propdata.hActivePropSheetPage = GetActiveWindow()
PropSheet_GetCurrentPageHwnd(hSheet);

minimálně jedna z nich vrací aktuální stránku, ale já to potřebuju zařadit někam, aby se ta aktuální stránka vždy  uložila když kliknu na jinou stránku. A to je právě ten problém protože jsem nenašel která zpráva toto obsluhuje a kamkam ji umístit, snad pod case: WM_COMMAND? Předpokládám že by Propsheet měl posílat nějakou zprávu, ale jak se jmenuje?

Nahlásit jako SPAM
IP: 78.45.87.–
KIIV
~ Moderátor
+43
God of flame
Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
oxidián0
Grafoman
10. 7. 2015   #3
-
0
-

Díky moc. Na ten message jsem už narazil, je to všude v každém modulu (stránce), ale já očekával že to bude v tom hlavním souboru. Ale tak v tom by snad nebyl problém to přidat i do hlavního souboru, ne?

Abych to tu uvedl jak je to realizováno:

INT_PTR CALLBACK Units1DlgProc(HWND dialog, UINT msg, WPARAM wParam, LPARAM lParam)
{
INT_PTR ret = FALSE;


switch (msg)
        {
	case WM_INITDIALOG:
	    ret = Units_HandleInit(dialog);
	break;
	case WM_COMMAND:
	    ret = 0;
	    Units_HandleCommand(dialog, HIWORD(wParam), LOWORD(wParam), (HWND)lParam);
	break;
	case WM_NOTIFY:
	    {
	    NMHDR *header = (NMHDR*)lParam;
	    switch (header->code)
		{
		case PSN_SETACTIVE:
		      SendDlgItemMessage(
		      dialog, IDC_U_LIST_PLAYERS, CB_SETCURSEL, propdata.pindex, 0);
		      Units_Reset(dialog);
		break;
		case PSN_KILLACTIVE:
		      Units_Save(dialog);
		      units1loaded = false;
	        }  // switch
	    } // end case
	break;
	} // end switch (msg)
return ret;
}
Nahlásit jako SPAM
IP: 78.45.87.–
oxidián0
Grafoman
10. 7. 2015   #4
-
0
-

Tak jsem zkusil dát ten blok notify přímo do hlavního procesu a to nefunguje. Skočí to do toho bloku case WM_NOTIFY: ale header->code není nastaven.

Takže ta zpráva PSN_SETACTIVE je volána jen z té procedury která se přiděluje do PROPSHEETPAGE.pfnDlgProc.

Takže z hlavního okna přímo to detekovat nejde? Hádám že ne. Takže to jako musím z každého modulu zvlášť detekovat?

Nahlásit jako SPAM
IP: 78.45.87.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 59 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý