Solved

CreateWindow

Posted on 1997-08-03
10
2,823 Views
Last Modified: 2013-12-03
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
Comment
Question by:superabbe
10 Comments
 
LVL 7

Expert Comment

by:faster
Comment Utility
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
 

Author Comment

by:superabbe
Comment Utility
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
 
LVL 1

Expert Comment

by:cnasarre
Comment Utility
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
 
LVL 4

Expert Comment

by:AVaulin
Comment Utility
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
 

Author Comment

by:superabbe
Comment Utility
...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
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 4

Accepted Solution

by:
davmarc earned 330 total points
Comment Utility
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
 

Author Comment

by:superabbe
Comment Utility
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
 
LVL 4

Expert Comment

by:davmarc
Comment Utility
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
 

Author Comment

by:superabbe
Comment Utility
Now it seems to work ...
It was nice to see someone that read the whole question before answering.
Abbe
0
 
LVL 4

Expert Comment

by:davmarc
Comment Utility
:-)
Glad it works now!

Davide Marcato.
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

In this article, I will show how to use the Ribbon IDs Tool Window to assign the built-in Office icons to a ribbon button.  This tool will help us to find the OfficeImageId that corresponds to our desired built-in Office icon. The tool is part of…
This article surveys and compares options for encoding and decoding base64 data.  It includes source code in C++ as well as examples of how to use standard Windows API functions for these tasks. We'll look at the algorithms — how encoding and decodi…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now