• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2890
  • Last Modified:

CreateWindow

When using CreateWindow , the first classname could be like "button" or "static". When using the "listbox" it should be able to make a drop down listbox..
How do i fill this listbox with variables ?
How do i get the ID of what i clicked on ?
I want a small example to try on and i want some small comments.
It should be written in c .. Perhaps a little switch statement ?

Thanks in advance Abbe
0
superabbe
Asked:
superabbe
1 Solution
 
fasterCommented:
Normally, you can send messages to manipulate the listbox, for example, SendMessage(handle,LB_ADDSTRING,0,"some string")

To get the selection, just send LB_GETCURSEL to the listbox with wparam and lparam of 0, the return value is the index of the selected item

0
 
superabbeAuthor Commented:
Where is the example ?
I Asked for a small example ...

Not a complete program but enough to show how it could be used in a real program
0
 
cnasarreCommented:
you are talking about a drop down "listbox".
are you meaning a drop down "combobox" ?
it is a static area above a popup list using an arrow
button ?

In that case, you can take a look at the WIN32\FONTVIEW
VC++ sample and the TOOLS.C file


If you are looking for real plain listboxes, here are some
good VC++ samples :
   WIN32\PRINTER   enumport.c, getcaps.c
   WIN32\TTFONTS   dialog.c
   WIN32\REGISTRY  monkey.c

0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
AVaulinCommented:
If you are use MSVC see SAMPLES\SDK\WIN32\FONTVIEW example. If no give me your e-mail and I'll send it to you.
Good luck.
0
 
superabbeAuthor Commented:
...Using bc5
faster was on the right way..
What i'm calling a listbox is a dropdown combobox

now is 300 points for a nice example..
0
 
davmarcCommented:
The following is some sample code that should help you. I am writing it by hand without a compiler so I couldn't test it, but I hope you'll be able to make a sense of it. It has comments and some error handling.

/* Declare a static handle for the combo window in the beginning of the source file */
static HWND hMyComboCtrl = NULL;

/* Create the dropdown combobox */
BOOL CreateMyComboCtrl()
{
    if (hMyComboCtrl)
        return TRUE; /* Already created - resource leak proof */

   /* Replace the params between -- */
   hMyComboCtrl = CreateWindow("COMBOBOX", --WindowNameStr--, --styleFlags--, --xPos--, --yPos--, --width--, --height--, --hParentWnd--, NULL, --hInstance--, --lpParam--);

    if (hMyComboCtrl)
        return TRUE;
    else
        return FALSE;
}

/* To add items */
BOOL InitializeMyComboCtrl()
{
    assert(hMyComboCtrl);  /* Check if the handle is valid */

    LRESULT result = 0;
    result |= SendMessage(hMyComboCtrl, LB_ADDSTRING, 0, "item1text");
    result |= SendMessage(hMyComboCtrl, LB_ADDSTRING, 0, "item2text");
    result |= SendMessage(hMyComboCtrl, LB_ADDSTRING, 0, "item3text");

    if (result == LB_ERR || result == LB_ERRSPACE)
        return FALSE; /* If any error occurred, return FALSE */
    else
        return TRUE;
}

int GetMyComboCtrlCurSel()
{
    assert(hMyComboCtrl);  /* Check if the handle is valid */

    return SendMessage(hMyComboCtrl, LB_GETCURSEL, 0, 0);
}

By the way, where are the 300 points? I still see only 200 :)

Davide Marcato.
0
 
superabbeAuthor Commented:
Hmmm good answer but i need a little bit more ...
The listbox style params which should i use ?
and the final argumet in createwindow lparam havent figure out
how to get it to work...
The |= operator , how does that one work ?

I get the listbox visible but i just cant get the """items""" into it...

Oh by the way is the points 320 and now it must be right or the pointsystem is out of order :)
0
 
davmarcCommented:
Let's begin from the last question: no the points are not even 320 - they are 330 if my human viewsystem is still working well :-)

Combobox style: since you want a dropdown combo with a static control showing the currently selected item, I suggest to use CBS_DROPDOWNLIST. I cannot say anything about other combobox-specific and general window styles because I don't have enough info about what you want, anyway the documentation explains them pretty well. In any case, you'll probably want to apply also the window styles WS_VISIBLE and WS_CHILD.

lparam: it is used to pass a pointer to a structure (CREATESTRUCT) that contains creation parameters to the windowproc of the created window. The handling code for WM_CREATE receives a pointer to this structure and can do some initialization if desired.
You don't need to set this parameter in your case - just pass NULL.

operator |= : sintactically the following statements are equivalent:
a = a | b;
a |= b;
Since "|" is the bit-wise OR operator and since the no-error condition in SendMessage() is represented by 0 return value, ORing the return values of 3 subsequent function calls is a compact and readable way to know if *any* of the calls returned an error with only one test in the end!

Hope this answer is exaustive enough...

Davide Marcato.
0
 
superabbeAuthor Commented:
Now it seems to work ...
It was nice to see someone that read the whole question before answering.
Abbe
0
 
davmarcCommented:
:-)
Glad it works now!

Davide Marcato.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now