windows - forvirrende funktion i C + + dialogbokse

Indlæg af Hanne Mølgaard Plasc

Problem



Hej kan nogen forklare mig, hvad denne funktion gør, jeg læser for øjeblikket en programmeringsbog og kæmper for at følge denne funktion.


Fra hvad jeg kan samle, tager funktionen et håndtag til et vindue (i dette tilfælde en dialogboks), så sendes information i det andet param og det tredje param er en pointer til det aktuelle objekt.


For at give nogle sammenhænge forsøger jeg at udfylde en kombinationsboks med de adaptere, som en computer har.


void AddItem(HWND hWnd, char *ch, void *pData) 
{
  WPARAM nI = (WPARAM)((int)(DWORD)SendMessage(hWnd,CB\_ADDSTRING,0,(LPARAM)ch));

  SendMessage(hWnd,CB\_SETITEMDATA, nI, (LPARAM)pData);
}


her er et eksempel kald:


for (UINT a=0; a<m\_dwNumAdapters; a++) 
{
   AddItem(m\_hADAPTER, m\_xAdapterInfo[a].d3dAdapterIdentifier.Description,
           &m\_xAdapterInfo[a]);
}


Tak.

Bedste reference


Jeg brugte tidligere noget som dette for at tilføje elementer til kombinationsboks, jeg kunne være til hjælp.


SendDlgItemMessage(hwnd, IDC\_COMBOSTATUS, CB\_ADDSTRING, 0, (LPARAM) (LPCTSTR) "Available");


Hvor hwnd handler til dialog, er IDC\_COMBOSTATUS ressource ID, og ​​andre er ret meget klare.


Prøv SendDlgItemMessage funktionen snarere SendMessage.


Hilsen,


Vajda

Andre referencer 1


Det tilføjer en strengværdi og tilhørende heltal til en kombinationsboks.


Det aspekt, du mangler, er, at listekasser, combos osv. Gemmer en heltalsværdi (samme størrelse som en pointer) i en liste parallelt med listen over tekstetiketter. Du kan sætte hvad du vil i heltalværdien. For eksempel kan du sætte en peger på nogle struct, der indeholder yderligere oplysninger.


Når du skal reagere på brugerens valg, læser du blot den valgte heltalværdi, kaster den til en peger og gør noget med disse oplysninger.


Selvfølgelig behøver mange lister og combos ikke noget af dette (en enkel streng er tilstrækkelig) og så 0 vil typisk blive bestået.