[c] combobox vullen lukt niet

Pagina: 1
Acties:

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ik probeer het als volgt:
code:
1
2
3
4
5
hwndSelectConnection = CreateWindow( TEXT("combobox"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | CBS_DROPDOWNLIST, 
0, 0, 0, 0, hWnd, (HMENU) ID_COMBO_CONNECTIONS, ((LPCREATESTRUCT) lParam)->hInstance, NULL );
SendMessage( hwndSelectConnection, CB_ADDSTRING, 0, (LPARAM) "Test" );
if( SendMessage( hwndSelectConnection, CB_FINDSTRING, -1, (LPARAM) "Test" ) == CB_ERR )
   MessageBox( hWnd, "zucht", "zucht", MB_OK );

Hij geeft geen messagebox, maar helaas ook geen test weer :(. Iemand een idee waar het aan kan liggen?

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ben er inmiddels achter dat ie alles wel correct vult, maar de opties niet wil weergeven. Als ik op dat "pijltje naar beneden" van de box druk, komt er (bijna) niets.

Verwijderd

Helpt het als je 'n Width en Height opgeeft in je CreateWindow?

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Op zaterdag 25 mei 2002 21:41 schreef Yarvieh het volgende:
Helpt het als je 'n Width en Height opgeeft in je CreateWindow?
Helaas niet. Bovendien vang ik de WM_SIZE-message op en zet daar de size helemaal goed, maar dat werkt dus ook niet.

Verwijderd

Telang al geen controls met code aangemaakt, maar als je de dialogeditor gebruikt moet je de dropped down size van je combobox los opgeven, neem aan dat je dat in code ook ergens kan doen? (geef 'm anders gewoon es een bizarre height op?)

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Heb m nu eens opgestart met width 200 en height 100. Verbazend genoeg werkt dit wel. Heb nu wat aangepast zodat ie de hoogte berekend afhankelijk van het aantal items. Hartelijk dank daarvoor.
Er zijn nu echter nog twee overgebleven problemen:
- hij tekent geen scrollbar bij veel items (en een height van 2000 opgeven werkt ook niet echt lekker :))
- wat bedoel je met de dropped down size opgeven? kwam wel ergens CB_SETDROPPEDWIDTH-message tegen, maar die lijkt me hier niet handig/hij doet niets.

Verwijderd

Op zondag 26 mei 2002 13:45 schreef SWfreak het volgende:
Er zijn nu echter nog twee overgebleven problemen:
- hij tekent geen scrollbar bij veel items (en een height van 2000 opgeven werkt ook niet echt lekker :))
WS_VSCROLL opgeven bij je create window.
- wat bedoel je met de dropped down size opgeven? kwam wel ergens CB_SETDROPPEDWIDTH-message tegen, maar die lijkt me hier niet handig/hij doet niets.
Width != Height, wat ik bedoelde was, dat als je in de dialog editor een combobox op je form dropped, en je klikt op het pijltje van die combo kan je aangeven hoe hoog de dropdown moet worden (maar ik vermoed dat ie op de achtergrond gewoon de height van je control aanpast) met die SETDROPPEDWIDTH message kan je de dropdown breder/smaller maken dan je comboboxje zelf als ik me niet vergis.

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Heb het nu helemaal door. WS_VSCROLL geeft scrollbar. De height die je opgeeft is de height voor de hele control dus inclusief dropdown-gedeelte. Door de height van de control te veranderen kun je dus het aantal weer te geven items veranderen. Zeer veel dank!!!
Voor de gein (en als anderen er later eens mee komen te zitten) ff de gebruikte code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
POINT setCorrectComboboxSize( HWND hwnd, int x, int y )
{
    TEXTMETRIC textMetrics;
    HDC hdc;
    int cxChar, cyChar, count;
    POINT pt;
    hdc = GetDC( hwnd );
    GetTextMetrics( hdc, &textMetrics );
    cxChar = textMetrics.tmAveCharWidth;
    cyChar = textMetrics.tmHeight + textMetrics.tmExternalLeading;
    count = (int) SendMessage( hwnd, CB_GETCOUNT, 0, 0 );
    if( count == CB_ERR )
    {
        count = 1;
    }
    else if( count == 0 )
        count = 1;
    else if( count > 10 )
        count = 12;
    else
        count += 2;
    pt.x = cxChar * 30;
    pt.y = (cyChar + 2) * count;
    MoveWindow( hwnd, x, y, pt.x, pt.y, TRUE );
    ReleaseDC( hwnd, hdc );
    return pt;
}

Verwijderd

Waarom maak je eigenlijk je eigen controls? ipv de dialogeditor +CreateDialog te gebruiken?

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Op zondag 26 mei 2002 14:07 schreef Yarvieh het volgende:
Waarom maak je eigenlijk je eigen controls? ipv de dialogeditor +CreateDialog te gebruiken?
Drie redenen:
- het is leerzaam om het zo te doen
- ik plaats de controls op de main window en niet op n dialog
- daar had ik helemaal niet aan gedacht. Ben nog maar net begonnen met proggen in WinC met nieuwe VS (versie 7). Moet alles nog een beetje ontdekken. Ik snap die resources nog niet zo goed. Het lijkt alsof alles daarmee heel makkelijk moet kunnen, maar het lijkt onmogelijk om een naam te veranderen of om internationalisatie goed te krijgen :(. Enig idee hoe dat moet?

Verwijderd

Op zondag 26 mei 2002 14:18 schreef SWfreak het volgende:
Drie redenen:
- het is leerzaam om het zo te doen
Absoluut, dit gaat later ook in je voordeel werken als je het na het schrijven van je 100.000 messagehandler zat bent en over wil/gaat stappen op toolkits als mfc of wtl, als je weet wat ie op de achtergrond voor je doet is het allemaal veel makkelijker te begrijpen imho.
maar het lijkt onmogelijk om een naam te veranderen
Met SetWindowText kan je altijd naderhand (runtime) nog texten op je dialog aanpassen.
of om internationalisatie goed te krijgen :(. Enig idee hoe dat moet?
Nog nooit iets mee gedaan sorry, maar volgens mij (weet nie helemaal zeker) hebben ze daar op codeproject.com wel 'n artikeltje over.
Pagina: 1