Nevím jaké slovo se pro to používá, anglicky tabs, česky možná ouška na které klikáte v okně když chcete přepnout ze stránky na stránku.
Snažím se porozumět zdrojovému kódu jednoho programu. Našel jsem místo ve kterém se vytváří jednotlivé stránky a okno, ale co mě zajímá je jak to funguje když kliknu na "ouško" a prvky v okně se přepíší těmi aktuálními prvky. Nemohu totiž v tom kódu najít nic co by toto překreslování provádělo. Je tam akorád jedna smyčka která se spouští jen jednou při iniciaci okna.
http://codepaste.net/184rjvNašel jsem:
/* Each editor's property page proc (in order of Dialog ID). */
DLGPROC procs[NUM_PAGES] =
{
&IMsgsDlgProc,
&PlyDlgProc,
&VictDlgProc,
&DisDlgProc,
&MapDlgProc,
&UnitDlgProc,
&TrigDlgProc
};
Sheet_HandleCommand - handles all commands routed to property sheet
A funkce na vytváření sheetu:
/*
MakeSheet: Creates the main property sheet window.
Parameters:
HINSTANCE app: Handle to the application loading the sheet.
Note: Called once and only once by WinMain().
*/
HWND MakeSheet(HINSTANCE app)
{
PROPSHEETHEADER header;
HPROPSHEETPAGE pages[NUM_PAGES];
PROPSHEETPAGE pg; //used to create each page
HWND sheet;
//create pages
pg.dwSize = sizeof(PROPSHEETPAGE);
pg.dwFlags = PSP_DEFAULT;
pg.hInstance = app;
for (int i = 0; i < NUM_PAGES; i++)
{
pg.pszTemplate = MAKEINTRESOURCE(IDD_MSGS + i); //template IDs are in display order
pg.pfnDlgProc = procs[i];
pg.lParam = 0;
pages[i] = CreatePropertySheetPage(&pg);
}
//create sheet
header.dwSize = sizeof(header);
header.dwFlags = PSH_MODELESS | PSH_USECALLBACK |
PSH_NOAPPLYNOW | PSH_NOCONTEXTHELP | PSH_USEICONID;
header.hwndParent = NULL;
header.hInstance = app;
header.pszIcon = MAKEINTRESOURCE(IDI_LOGO);
header.pszCaption = szTitle;
header.nPages = NUM_PAGES;
header.nStartPage = 0;
header.phpage = pages;
header.pfnCallback = &PropSheetProc;
sheet = (HWND)PropertySheet(&header);
//add status bar here (can't be done in PropertySheetProc)
propdata.statusbar = CreateWindow(STATUSCLASSNAME, welcome,
WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
sheet, (HMENU)IDS_MAIN, aokts, NULL);
return sheet;
}
Všechno by přitom mělo být v tomto souboru, protože je to hlavní soubor a ten obsahuje vše podstatné k hlavnímu oknu.