1) ProgressBar se ve WinApi ovlada pomoci zprav, ktere mu posilas pomoci SendMessage. Nejdriv pomoci PBM_SETRANGE nastav rozsah (muzes nechat i defaultni 0-100) a pak pomoci PBM_SETPOS nastavis hodnotu v danem rozsahu a progressbar ji zobrazi. Pripadne muzes pouzit PBM_SETSTEP na nastaveni delta hodnoty, ktera bude pri kazdem poslani zpravy PBM_STEPIT prictena k aktualni hodnote. Vice na
MSDN
2) Ano dá. Klávesové zkratky se v dialogu zpracovavaji pomoci takzvanych Acceleratoru. V resource editoru pridas do projektu tabulku akceleratoru (Project/Add accelerator), pak pomoci Add pridas vsechny klavesove zkratky co potrebujes, kazde priradis unikatni jmeno a ID. Tabulce akceleratoru taky prirad nejake unikatni ID (treba ID tabuky 2000 a zkratky 2001, 2002...). Po ulozeni by .rc souboru mela tabulka akceleratoru vypadat nejak takto
Kód: Vybrat vše
#define IDR_ACCEL 2000
#define CtrlShiftK 2001
#define CtrlF 2002
IDR_ACCEL ACCELERATORS
BEGIN
75,CtrlShiftK,VIRTKEY,CONTROL,SHIFT,NOINVERT
70,CtrlF,VIRTKEY,CONTROL,NOINVERT
END
V programu je pote nejdriv potreba nacist tabulku akceleratoru pomoci LoadAccelerators()
Kód: Vybrat vše
HACCEL hAccel = LoadAccelerators(hThisInstance, MAKEINTRESOURCE(2000));
//hThisInstance - instance programu
//MAKEINTRESOURCE(2000) - 2000 je ID tabulky akceleratoru
a nasledne pridat funkci TranslateAccelerator() k funkcim na zpracovani zprav
Kód: Vybrat vše
TranslateAccelerator(hwnd, hAccel, &messages);
...
TranslateMessage(&messages);
DispatchMessage(&messages);
Nyni ti pri stisknuti dane kombinace prijde notifikace ve forme zpravy WM_COMMAND stejne, jako ti chodi treba od tlacitek
Kód: Vybrat vše
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 2001:
MessageBox(0, "Ctrl-Shift-K", "Prvni", 0);
break;
case 2002:
MessageBox(0, "Ctrl-F", "Druhy", 0);
break;
}
break;
Dalsi info na
MSDN
3)
Kód: Vybrat vše
SendMessage(GetDlgItem(hwnd, 1002), CB_ADDSTRING, 0, (LPARAM) "Text");
//hwnd - handle dialogu
//1002 - ID ComboBoxu
//CB_ADDSTRING - zprava pro pridani polozky
//0 - nepouziva se, musi byt 0
//"Text" - text, ktery chces pridat
Opet viz
MSDN
4)
Kód: Vybrat vše
int Val = SendMessage(GetDlgItem(hwnd, 1003), TBM_GETPOS, 0, 0);
//Val je vysledna hodnota v rozmezi MinRange a MaxRange Trackbaru
//hwnd - handle dialogu
//1003 - ID TrackBaru
//TBM_GETPOS - zprava pro ziskani hodnoty
//0 - nepouziva se, musi byt 0
//0 - nepouziva se, musi byt 0
Tradicne na
MSDN
5) Muzes mu bud nastavit TickFrequency
Kód: Vybrat vše
SendMessage(GetDlgItem(hwnd, 1003), TBM_SETTICFREQ, (WPARAM) 10, 0);
//hwnd - handle dialogu
//1003 - ID TrackBaru
//TBM_SETTICFREQ - zprava pro nastaveni frekvence ticku
//10 - tick kazdou 10. hodnotu
//0 - nepouziva se, musi byt 0
cimz budes mit porad moznost delat i jemne zmeny. Nebo nastav Trackbaru maly rozsah a vysledne hodnoty podle potreby vynasob...
(koukam, ze bych tenhle thread mohl pomalu vydat jako knizku

)