jeg vil gerne lave et static lib i ren C som kan give mig en checklist med N checkboxes (fx N=5 eller hvadsomhelst). Bare den helt basale funktionalitet, ikke noget fancy (behøver fx ikke være indrammet eller tilknyttet en group).
Mit problem er at oprette og navnlig accesse disse N checkboxes på simlest mulig vis. Jeg lave godt godt lave en eneste funktion i mit lib som i et for-loop kreerer N checkboxes ovenpå hinanden, men med mindre min caller selv leverer N handles kan jeg ikke finde ud af at accesse disse N checkboxes. Er der en løsning på dette?
Måske formulerer jeg mig uklart her?! Bare protestér så laver jeg en ommer.
jeg tror du har ret, men jeg vil gerne lige forstå lidt bedre. Er følgende strategi en levedygtig løsning? 1: Jeg opretter N kontroller i en funktion der som return-argument giver handle til den første af disse. 2: Handle til den første Check omsætter jeg til et ID (lad os kalde den ID0) med GetDlgCtrlID (som er en integer) 3: Nu stoler jeg på at ID for den i'te kontrol oprettet under (1) har IDi=ID0+i (er dette garanteret?) 4. Nu bruger jeg GetDlgItem til at få et handle til den i'the kontrol oprettet under (1) 5. osv osv Går dette, tror du? Særligt trin 3 ser suspekt ud da det beror på en antagelse om succession?!
Grunden til C og ikke C++ er mine ringe evner udi den svære kunst at programmere. C++ kan sikkert mange ting meget smartere, men ham der sidder ved tasterne har desværre moderate evner. OK, til næste år holder jeg op med at ryge, drikke, spille poker, tager al opvask, støvsuger dagligt, og begynder at lære C++.
Det letteste er at bruge ID for kontrollerne, i stedet for handle. Du har selv fuld kontrol over ID, du bestemmer dem når du opretter kontrollerne. Det letteste er at give dem fortløbende numre.
Så du kan lave en funktion til at oprette dem: void CreateCheckList(HWND aParent, unsigned aFirstId, unsigned aNum)
Denne funktion giver så kontrollerne ID (aFirstId + 0) -> (aFirstId + aNum - 1);
Du kan derpå lave en funktion: void SetCheck(HWND aParent, unsigned aId)
Og i denne bruge GetDlgItem til at få handlen på kotrollen.
Du kan ikke regne med værdien af en handle eller nogen form for sammenhæng mellem disse.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.