|
Hi.
I added a simple CListCtrl box with a List style to a dialog box. However, I cannot insert more than one item. Another possible problem is that Windows is not drawing the other items. Nonetheless, only one item shows up. Here is an example what how I inserted items.
-----
OnInitDialog(...)
{
LVITEM Item;
Item.mask = LVIF_TEXT;
Item.state = LVIS_SELECTED;
Item.stateMask = LVIS_SELECTED;
Item.cchTextMax = 0;
Item.iImage = 0;
Item.lParam = 0;
Item.iSubItem = 0;
Item.pszText = TEXT("November");
// I would like to insert ten items in the list box.
for (unsigned i = 0; i < 10; ++i)
theListBox.InsertItem(&Item);
-----
After the insertion above, only one line of "Novermber" will show up in the CListCtrl box.
I have worked with CListCtrl boxes using Report Style. I have not had this problem. I would like to know why does it ignore all new items except the first line?
Thanks,
Kuphryn
|
|
|
|
|
Okay - I'll be the first to admit I don't know what I'm doing. But it looks like you're trying to insert the same item (ie, same memory address pointing to the item) multiple times.
I would try creating a second LVITEM called Item2, insert that, and see if you get multiple values in the CListCtrl. In the .InsertItem() function it may actually check and see if an item is already there, and if so, don't add it again.
- Kati
|
|
|
|
|
From MSDN
iItem
Zero-based index of the item to which this structure refers.
so... change your code to:
for (unsigned int i = 0; i < 10; ++i)
{
Item.iImage = i;
theListBox.InsertItem(&Item);
}
This sets the index of the item to something other than 0.
That's why I ramble so much. If you're short and quotable, there's a much greater danger of ending up in a sig.
[Christopher Duncan on how to prevent yourself from ending up in a sig]
|
|
|
|
|
Okay. Thanks everyone.
I decided to go back to the same solution I have been using on othe projects: Report style. It works perfect.
Kuphryn
|
|
|
|
|
You should fill in the item index.
Item.iItem=i;
|
|
|
|
|
Hello!
To detected LButton hold (for many minutes if you want) when mouse is moving we write:
void XXX::OnMouseMove(UINT flags, CPoint p)
{
if ( flags & MK_LBUTTON ) {
....
}
}
How can I detect LButton hold ( for many minutes ) when mouse is not moving ?
Thanks,
Sovann.
Why waste time learning while ignorence is instantaneous ? [Hobbes]
|
|
|
|
|
WM_LBUTTONDOWN and WM_LBUTTONUP.
Christian
No offense, but I don't really want to encourage the creation of another VB developer. - Larry Antram 22 Oct 2002
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
You could also try ::GetAsyncKeyState( VK_LBUTTON );
Wenn ist das Nunstück git und Slotermeyer? Ja! Beierhund das oder die Flipperwaldt gersput!
|
|
|
|
|
VC++ 6
For a custom control, I have to show / hide the focus rect in SetFocus / KillFocus, and in accordance to the "Windows painting rules" (i.e. message handlers invalidate regions, and all drawing is done in WM_PAINT) I've come up with the following solution:
a) WM_SET/KILLFOCUS creates a region that is just the focus rectangle, and invalidates it
b) WM_PAINT draws the focus rect(if necessary), then stops anything else when the remaining area is not part of the update region
Now, this sounds like a little bit of overkill here. any GDI gurus coming up with something better?
skulls don't kiss for an explanation - wait for the vacation photos! [sighist]
|
|
|
|
|
It may be simpler to set some member variable "bFocusChanged" inside the WM_SET/KILL FOCUS messages, then do an Invalidate on the control. In the WM_PAINT handler, check if the flag is set, and if so, only redraw the focus state. After this, set the bFocusChanged to FALSE. I'm not sure if this is the best way, but it will be less expensive than region testing.
Chris Richardson
Programmers find all sorts of ingenious ways to screw ourselves over. - Tim Smith
|
|
|
|
|
I thought of that too - but this would drop any other invalidates that are either pending, or happen between the message handler and the actual WM_PAINT.
skulls don't kiss for an explanation - wait for the vacation photos! [sighist]
|
|
|
|
|
This is overkill. Just draw the control and paint a focus rect afterwards if the control has the focus. For Set/Kill focus, invalidate the whole control (without forcing a background redraw).
|
|
|
|
|
I am writing my own shell. Where can I get info on how to create taskbar and systray and make them work ?
I am seaching for information fro two months!
Help!
|
|
|
|
|
The taskbar is an example of an "App Bar". Take a look at SHAppBarMessage in the MSDN. It provides all you need to create your own.
Chris Richardson
Programmers find all sorts of ingenious ways to screw ourselves over. - Tim Smith
|
|
|
|
|
I need a view get the size of a formview, not the form size to the view.
I know the second option is using RecalcLayout and ResizeParentToFit, and the first option how?
Thanks.
|
|
|
|
|
Hi
I was wondering about the desktop and settings for it. I haven't really played about with things like this before, so maybe some of you who have could point me in the right direction?
I was thinking that it would be kind of cool to have a script that runs on startup to change the desktop background randomly, based on pictures in a particular folder. Is this silly / impossible, or is it a simple concept that I should have learned at the same time as learning to semi-colon and somehow missed out on?
Thanks for any ideas / pointers in the right direction.
ps. I would like to write the script myself, rather than download an exe utility. Thanks!
I knew it would end badly when I first met Chris in a Canberra alleyway and he said 'try some - it won't hurt you'.....
- Christian Graus on Code Project outages
|
|
|
|
|
This is reasonably easy to do using SystemParametersInfo() . Specifically, see SPI_SETDESKPATTERN and SPI_SETDESKWALLPAPER .
/ravi
Let's put "civil" back in "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Thanks - looking forward to getting it working
I knew it would end badly when I first met Chris in a Canberra alleyway and he said 'try some - it won't hurt you'.....
- Christian Graus on Code Project outages
|
|
|
|
|
|
Thanks!
I knew it would end badly when I first met Chris in a Canberra alleyway and he said 'try some - it won't hurt you'.....
- Christian Graus on Code Project outages
|
|
|
|
|
Is it possible to create a hook for a MS DOS program? I wish to hook NT's net.send function that you can use under CMD (I assume it stands for command).
For those who are wondering, I wish to block out which computer sends the message. My school frowns on sending messages, and I wish for a little more impunity!
Thanks,
~ Selevercin
If you have a problem with my spelling, just remember that's not my fault. I [as well as everyone
else who learned to spell after 1976] blame it on
Robert A. Kolpek for U.S. Patent 4,136,395.
|
|
|
|
|
There is a way to hook API calls for all processes in the system. You must first write a DLL and get it loaded (possible using a global message hook) in all processes. Then, it's possible to hook functions using APIHijack, which can be found I think here on CodeProject. The function you will want to hook is called NetMessageBufferSend, located in NetApi32.dll, which is what the "net send" command uses I'm sure.
Chris Richardson
Programmers find all sorts of ingenious ways to screw ourselves over. - Tim Smith
|
|
|
|
|
Or maybe it would be easier just to write your own program which would call NetMessageBufferSend, and pass some bogus name for the "fromname" parameter.
Chris Richardson
Programmers find all sorts of ingenious ways to screw ourselves over. - Tim Smith
|
|
|
|
|
Cool, I didn't know about that function Works for me! Do you know what the parameter ServerName needs? An IP address? Also, what is Msgname? I assume the par. buf is the actual message.
Thanks VERY much,
~ Selevercin
If you have a problem with my spelling, just remember that's not my fault. I [as well as everyone
else who learned to spell after 1976] blame it on
Robert A. Kolpek for U.S. Patent 4,136,395.
|
|
|
|
|
Unless you want the function to execute on some other machine (which the ServerName would be the name or IP address of), you can pass NULL for the ServerName parameter. Indeed, the parameter buf is the message.
Selevercin wrote:
Thanks VERY much
No problem
Chris Richardson
Programmers find all sorts of ingenious ways to screw ourselves over. - Tim Smith
|
|
|
|