|
Isn't that being read from the DB with:
m_pFrame->m_DbMgr.m_Rs.GetFieldValue("LruIndex", nLruIndex);
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Yes, but if the database keys are out of order or staggered, then the list control will not display all of the items. It will only display 0 through n items, where the items mentioned are contiguous. Any items after n will not display.
Josh Davis
Always looking for blackjack. Or maybe White Frank. One of the two.
|
|
|
|
|
So then how would "incrementing the LRUindex at the end of the while loop" correct this? It sounds as though a separate variable is needed.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Agreed. He said he got rid of that column in the database and used a nonlinked variable.
Josh Davis
Always looking for blackjack. Or maybe White Frank. One of the two.
|
|
|
|
|
The solution to both of your problems was given here. The columns of the list control are numbered 0-9, but you are only setting the text of columns 0-8. You may have a separate problem depending on if the list control has either of the LVS_SORTxx styles set.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Their is iItem and iSubItem, iItem is the first column containing the main title of whatever your trying to work with. Any other column after the primary column is a iSubItem.
So iItem = 0 & iSubItem = 0 to insert text in the first column, iItem = 0 & iSubItem = 1 to insert something to the second column. For the second row entry iItem = 1 & iSubItem = 0!
Using ListView control under Win32 API[^]
|
|
|
|
|
hi
try to use a return value of InsertItem function as index in SetItemText() instead the value that you use.
index InsertItem function returns is a current line. otherwise you can;t to know in which line your text will appeare
|
|
|
|
|
Ok thank you
any have i have solved this problem
3 days back
|
|
|
|
|
Modification: I didn't mention that I'm working under W7!
Morning all!
I have a GDI leak in a program that I'm trying to track down.
I've found various programs (GDIView, MemoryValidator, DPus, Deleaker), and none of them do what I want (though they have been useful to narrow the issue down).
What I want to do, is to be able to get a list of all the GDI handles that exist in my process - then I can make a before / after comparison to see which ones should be around, and which not.
The nearest functions I can find are GetObject , and GetObjectType - but to use those I have to loop around 4 billion times, and I get a lot of false positives - not to mention, it takes a LONG time to do 4 billion calls in an out of kernel mode.
There's also GetGuiResources , but that just gives a total.
Where's my EnumGuiResourcesEx function!?
Any hints? I've had a look at DbgHelp.dll too, and it does not seem useful in this case.
Here's hoping y'all can say "Oh, just look at the frobble sdk - it's perfect!"
Iain.
I have now moved to Sweden for love (awwww).
modified on Tuesday, May 25, 2010 7:46 AM
|
|
|
|
|
I don't know if you have already checked out this [^] (moreover I don't know if it might be helpful, as it is a bit outdated).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Yes, I had... But it's out of date now.
I did miss out a vital fact that I'm working under Windows 7.
Thanks for trying though!
Iain.
I have now moved to Sweden for love (awwww).
|
|
|
|
|
This might be completely useless, but Sysinternals do a utility called, IIRC, Handle. I think you can run it against a single process. Probably shows way too much, but filtering the output sounds a lot less painful than 2^32. You might need to cobble up some way of suspending your process at appropriate before/afters.
Good luck! Leaks are the original and best PITA.
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
I thought I looked at Handle - and on a further check, I had.
Sadly, it's great for events, file handles, etc - but completely skips gdi handles.
I checked out devenv.exe. I can't believe VS2008 doesn't have any bitmap objects open for it's toolbars...
So, nul point, but keep trying!
Iain.
ps. I didn't think this would be hard either, but...
I have now moved to Sweden for love (awwww).
|
|
|
|
|
There are probably shed loads of functions to hook, but could you hook the various Creates and Deletes for GDI objects and keep a count of what's using what that way? There was a time when everyone under the sun was writing API hooks so there are plenty of implementations out there for 32 bit code at least.
Cheers,
Ash
|
|
|
|
|
I think this will end up being the way I go...
This is for my day job, but maybe I'll end up with an article out of it!
This looks like a good start: API Hooking with MS Detours[^]
Thanks,
Iain.
I have now moved to Sweden for love (awwww).
|
|
|
|
|
hope this[^] helps
oops, didn't refresh the page, now i saw you already had this answer, sorry
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
sashoalm wrote: oops, didn't refresh the page, now i saw you already had this answer, sorry
I've *never* done that.... erm...
Thanks for the thought though!
Iain.
I have now moved to Sweden for love (awwww).
|
|
|
|
|
Hey!
Don't know if this question is still actual or not (better late then never i guess) but i found this: http://www.codeguru.com/forum/archive/index.php/t-176997.html[^], they talk about a way to query all the handles of a process and their "types", don't know if this can help you at all or not, maybe it doesn't even include GDI handles, didn't try it but i thought i share, perhaps it has some usefull info.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Computers are evil, EVIL i tell you!! <
|
|
|
|
|
Nice search, thanks. It does talk about the sysinternals utilities - and they skip over GDI handles, so I'm not overly optimistic. But trying it out has to be easier than writing my own hooking stuff!
Thanks,
Iain.
I have now moved to Sweden for love (awwww).
|
|
|
|
|
Hi,
I am drawing png image on button using
Graphics grpx(dc);
Image *Img = new Image(L"dleft.png",TRUE);
But I have to put the png in the relative folder. I want to put it in resource file so that I can use only exe file.
How to do that?
|
|
|
|
|
I would describe the algorithm in brief.
Step 1:Add the image to your project as resource.
Step 2:Call FindResource to retrieve HRSRC handle for the resource.Next call LoadResource API function to load the resource into the memory.
Step 3:Call CreateStreamOnHGlobal function to get IStream* pointer to the resource.
Step 4.Use the appropriate constructor of GDI+ Image/Bitmap class to create the instance and release the resources if needed.
Life is a stage and we are all actors!
|
|
|
|
|
Thank you very much...I try as you described
|
|
|
|
|
Hi,
I want to compare last five character.Is there any direct syntax for that.
Im geting secondary monitor size, to get that im using the follwing code
mi.cbSize = sizeof(mi);
GetMonitorInfo(hMonitor, &mi);
mix.cbSize = sizeof(mix);
GetMonitorInfo(hMonitor, (MONITORINFO*)&mix);
CString display;
display.Format("%s" ,(LPSTR)mix.szDevice);
if(strcmp(display,\\.\DISPLAY1)==0)
{
DualRect = mi.rcMonitor;
display.Format(" Res[%d,%d,%d,%d]",DualRect.left,DualRect.right,DualRect.top,DualRect.bottom);
AfxMessageBox(display);
}
Here display get string as "\\.\DISPLAY1" but in stringcomparison,it doesnot get passed.
Whats my mistake?
Like this i will strcmp with DISPLAY2 string and then i will get that second monitor screen size.
Anu
|
|
|
|
|
CString::ReverseFind[^]
or if you're too much into C++, string::rfind or wstring::rfind can be used.
I suggest you to use the CString version. You can find lot of string parsing functions in CString class.
To find whether a monitor is a primary or secondary, you can use dwFlags parameter in the MONITORINFO structure [^]
-Sarath.
Rate the answers and close your posts if it's answered
|
|
|
|
|
since display is a CString, the = overload may be used.
just try out this.
if(display=="\\.\DISPLAY1")
{
.......
}
and make sure, since you have \ as a character in a string, perhaps, you will have to use one more \ preceeding it.
--------------------------------------------
Suggestion to the members:
Please prefix your main thread subject with [SOLVED] if it is solved.
thanks.
chandu.
|
|
|
|