Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - nosferatus

Stran: 1 [2]
16
Vývoj / Re:Jak fungují taby C/C++
« kdy: 29. 06. 2015, 14:52:37 »
Ještě jsem našel inkludované funkce:

Kód: [Vybrat]
#undef PropSheet_IsDialogMessage
inline LRESULT PropSheet_IsDialogMessage(HWND propsheet, PMSG msg)
{
return SendMessage(propsheet, PSM_ISDIALOGMESSAGE, 0, (LPARAM)msg);
}

#undef PropSheet_GetCurrentPageHwnd
inline HWND PropSheet_GetCurrentPageHwnd(HWND propsheet)
{
return (HWND)SendMessage(propsheet, PSM_GETCURRENTPAGEHWND, 0, 0);
}

17
Vývoj / Jak fungují taby C/C++
« kdy: 29. 06. 2015, 14:21:10 »
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/184rjv

Našel jsem:

Kód: [Vybrat]
/* 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:
Kód: [Vybrat]

/*
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.

18
Vývoj / Re:C/C++ Editování položky stromu ve Windows
« kdy: 29. 06. 2015, 14:10:50 »
Dík za odpovědi. Já to už vyřešil a vyřešil jsem to jinak, protože jsem nechtěl měnit tu hodnotu kterou tam autor vyplnil pomocí setmem. Nebyl jsem si jistý jaké měl důvody k tomu že to udělal tak a ne onak a nechci aby v progamu vznikly další bugy. Takže jsem to udělal tak že jsem přiměl tu funkci na čtení dat aby vrátila počet načtených znaků a toho jsem pak využil k tomu abych mohl dosadit konec stringu v té funkci která volá .reads

19
Vývoj / Re:C/C++ Editování položky stromu ve Windows
« kdy: 27. 06. 2015, 14:06:04 »
Kód: [Vybrat]
void Trigger::tobuffer(Buffer& buffer) const
{
int i, num;

buffer.write(&state, 14);
buffer.fill(0, sizeof(long));
description.write(buffer, sizeof(long));
buffer.writes(name, sizeof(long));

//effects

num = effects.size();

buffer.write(&num, sizeof(long));
for (i = 0; i < num; i++)
effects[i].tobuffer(buffer);

for (i = 0; i < num; i++)
buffer.write(&i, sizeof(long));

//conditions

num = conds.size();

buffer.write(&num, sizeof(long));

for (i = 0; i < num; i++)
conds[i].tobuffer(buffer);

//condition order
for (i = 0; i < num; i++)
buffer.write(&i, sizeof(long));
}

Mohl by se na to někdo podívat a poradit jak to opravit?

20
Vývoj / C/C++ Editování položky stromu ve Windows
« kdy: 27. 06. 2015, 13:38:10 »
Snažím se porozumět jednomu zdrojovému kódu a přijít na to kde vzniká chyba a jak ji vyřešit. Je to takový editor na scénáře ve hře. Je tam strom ve kterém si vytváříte jakoby "složky" (triggery) ve kterých jsou efekty a podmínky. Položku ve stromě mohu přejmenovat nebo zkopírovat a vložit jako nový trigger. Chyba která tam vzniká je, že při vložení jsou na konci divné nečítelné znaky, ne moc ale jen několik, třeba dva, ale jak zkopíruju už zkopírovanou položku tak se to násobí. A tak potřebuju poradit na co bych se měl zaměřit když hledám tu chybu.

trigger.cpp
http://paste.ofcode.org/sin2HzidN6eagza3s4sAt
triggeredit.cpp
http://p.ahkscript.org/?p=ee985b
Procházel jsem to laděním a narazil jsem jen na to jak se tam otevírá nebo kopíruje schránka. Takže nemohu přijít na to jak tu chybu opravit.

Stran: 1 [2]