|
I have checked again CreateDIBitmap and I finally got the correct bitmap displaying on my button, so your code works just perfect!
Thank you very much for your time offered to me!
Best regards!
Ioan
|
|
|
|
|
|
Ok, so after trying for hours on end to get things working correctly I am posting here.
I am new to programming and trying to learn. Please provide me with clarification of how I have this screwed up. Also, please include how I can fix this. I learn through practicals.
Also, I have changed things so many times trying to call the function correctly with assigning the correct arguments but I am just so confused at this point I am asking for help.
#define _WIN32_WINNT (0x0601)
#include <windows.h>
#include <winbase.h>
#include <winreg.h>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
DWORD pdwQuotaAllowed, pdwQuotaUsed;
GetSystemRegistryQuota(&pdwQuotaAllowed, &pdwQuotaUsed);
DWORD dwFlags;
RegGetValue(&dwFlags);
cout << pdwQuotaAllowed << endl;
cout << pdwQuotaUsed << endl;
return 0;
}
|
|
|
|
|
As a newbie to programming I would strongly caution you not to do anything to the registry. If you corrupt an entry you could end up with a totally unusable system.
As to the code you posted you need to read the MSDN documentation for details of how to use particular functions, e.g RegGetValue()[^] needs a lot more parameters than you offered. Once again, I would suggest you find something less likely to damage your system to learn on.
txtspeak is the realm of 9 year old children, not developers. Christian Graus
|
|
|
|
|
We can set task manager always on top by check options -> always on top
is that possible we can set our application window always on top
Trioum
|
|
|
|
|
You could create the window using WS_EX_TOPMOST , or use SetWindowPos()[^] to make an existing window have the always-on-top style.
|
|
|
|
|
See also somediscussions here[^].
txtspeak is the realm of 9 year old children, not developers. Christian Graus
|
|
|
|
|
I would like to update my CListCtrl at specific counts. I have tryed the following code and it does not update the control until the main loop is finished. What am I missing?
for(long x = 0; x != 1000;x++)
{
int iCount = 1000;
int a;
for ( long loop =0; loop != 100;loop++)
{
m_list.InsertItem(0,"Loop test");
}
m_list.UpdateData();
// test delay
do
{
a++;
} while(iCount--);
}
Any constructive help on subject is as always appreciated.
Thanks for reading.
Vaclav
|
|
|
|
|
What does UpdateData() do? The MSDN page[^] doesn't mention such a method.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Sometimes you just have to hate coding to do it well. <
|
|
|
|
|
"CWnd::UpdateData
This method initializes data in a dialog box, or retrieves and validates dialog data."
To be truthful I am not sure if it does anything in my test case.
I was just trying to make it work for me. It works same wihtout it - the list updates on completion of the loop only.
I vaguely recall using it when I have been accessing (different) list control from functions and not in the loop like this time. It did update the list then.
I am currently looking onto LVITEM and see if it can be used.
Thanks for your input.
Vaclav
|
|
|
|
|
the documentation says it works for dialog box (update variables associated with controls with DDX macros) , not for lists or other controls.
Watched code never compiles.
|
|
|
|
|
Vaclav_Sal wrote: To be truthful I am not sure if it does anything in my test case.
Exactly the reason why you should not be using it. There are a few exceptions to this, but this is definitely not one of them.
"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
|
|
|
|
|
Ah, that UpdateData, i belive that is only used on dialogs, i mean, you use it to move data between controls on a dialog and data members assigned to them, you usually don't use UpdateData on controls themselfs. Anyways, now i am a bit confused about what you are trying to achieve...
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> Sometimes you just have to hate coding to do it well. <
|
|
|
|
|
Basically, I have nested loops changing one COM parameter at a time, outputing simple command ( 5 bytes ) to a serial device ( ham radio ) and reading the response ( frequency ). If the response is valid ( numeric characters ) I assume that the COM setup is correct.
The entire process ( about 80 steps) is displayed in a list control for about 2 seconds ( time for the hardware to react).
The code I used here was just to get the display working after each setup is completed.
The UpdateData was incorrect way to accomplish this( see last entry in thread).
Vaclav
|
|
|
|
|
When dealing with a large number of items in a list ( CListBox, CListCtrl), it is best to learn how to use virtual list boxes (owner drawn lists ) ( read this :virtual lists[^] )
This technique will remove most (if not all) performance issues, mostly when inserting a large number of items at one time in the list.
Another suggestion if you just want to "make it work" is to disable the drawing when inserting items in the list with CWnd::LockWindowUpdate and CWnd::UnlockWindowUpdate .
Watched code never compiles.
|
|
|
|
|
Nope, it did nor work using CWnd::LockWindowUpdate and CWnd::UnlockWindowUpdate.
And yes, the documentation say that about UpdateData() ,apparently correctly because it does not do anything (visible) in my code.
But, CListCtrl is in DDX. It should do something, and it probably does when the function is finished.
I think stopping the windows from hogging the process is the key.
But I would expect at least one good pass. That is bugging me.
Thanks for your input.
|
|
|
|
|
Try using
m_list.UpdateWindow() whenever you want to display the new information.
Hope that helps.
Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
Sorry Karl, no cigar!
But I found something, hold on to your hat!
If I take the scroll bars off the report list - it works as expected!
Using m_list_UpdateData(); after the "minor" loop!
Thanks all for sticking with me and helping me to "solve" this.
I guess to do it right - hide the control, disable the scroll bars and unhide it.
I just cannot help to say this - so much for multitasking operating system.
73 Vaclav
|
|
|
|
|
it's a hack, and probably a bad one.
but if it works for you...
Watched code never compiles.
|
|
|
|
|
Even better - sort off.
m_list.Update(0);
The flicker is ok in my case - feedback to user.
|
|
|
|
|
Vaclav_Sal wrote: What am I missing?
The primary thread is busy counting, thus it has no time for painting windows. Use a secondary thread to do the counting. See here for more.
"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
|
|
|
|
|
I actually started going that direction. But I slept on it and decided to do it the old fashioned way - KISS.
I really do not want to get tangled in another controversy here.
I have had enough recently. I'll just say one thing - who is on first here? Programmer or OS? Is OS really "too busy"? I want to process milisecond long singal and the OS is too busy painting?
Enough.
Cheers
Vaclav
|
|
|
|
|
Vaclav_Sal wrote: I really do not want to get tangled in another controversy here.
What is controversial about creating a secondary thread?
Vaclav_Sal wrote: Is OS really "too busy"?
Since WM_PAINT messages are very low priority, all else is going to take precedence over them.
Vaclav_Sal wrote: ...and the OS is too busy painting?
No, if the OS was busy painting, you'd see the list control being painted along with the numbers being counted. In other words, the three loops are tying the CPU up and no WM_PAINT messages are being processed.
"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
|
|
|
|
|
FYI Here is my best solution:
iCountLog = m_list.GetItemCount();
m_list.RedrawItems(0,iCountLog );
UpdateWindow();
It uses methods available to CListCtrl.
It is simple, and looks OK on the desktop.
It draws item list LIFO fashion, as required.
It may be doing some unnecessary work - but it will do for now.
What bugs me - why did it took me so long to find it?
Cheers
Vaclav
|
|
|
|
|
when i tried to convert a char array to double using atof() i am getting value 1077162803.000000
|
|
|
|