|
Is your label a static control? If so, have you tried calling SetWindowText() ?
"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
"Some people are making such thorough preparation for rainy days that they aren't enjoying today's sunshine." - William Feather
|
|
|
|
|
|
When you create the window for the "0%" do you give it it's own unique ID, or juts use -1 or some other generic value. My reason for asking is that typically when creating a static control using a dialog/resource editor, the control gets an ID that can thwart an attempt to uniquely identify it later. (unless you maintain a global variable that holds the HWND of the static control)
The two approaches you may use are (1) maintain a global variable to hold the HWND of the control and (2) use a #define to give the static control a unique ID.
In the first approach you have the HWND already and just need to set the text, while the second approach means you need to retrieve the HWND by using the control id, before then going on to alter the text.
Approach 1:
HWND globalPercentCompleteLabelHwnd;
globalPercentCompleteLabelHwnd = CreateWindow(WC_STATIC, "0%", windowStyle, xPos,yPos, width,height, hwndParent, (HMENU)-1, hInstance, NULL);
...
...
...
SetWindowText(globalPercentCompleteLabelHwnd, "Some new text");
Approach 2:
#define IDC_PERCENT_STATIC 10001 // or any other arbitrary, UNIQUE id
CreateWindow(WC_STATIC, "0%", windowStyle, xPos,yPos, width,height, hwndParent, (HMENU)IDC_PERCENT_STATIC, hInstance, NULL);
...
...
...
HWND tmpCompleteLabelHwnd = GetDlgItem(hwndParent, ID_PERCENT_STATIC);
SetWindowText(tmpPercentCompleteLabelHwnd, "Some other new text");
Approach 1 relies on maintaining a global variable, while the second method implies a way of gaining access to the HWND of the control's parent - which you already have if changing the text inside the main WindowProcedure.
modified on Monday, September 19, 2011 10:40 AM
|
|
|
|
|
And what happened?
"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
"Some people are making such thorough preparation for rainy days that they aren't enjoying today's sunshine." - William Feather
|
|
|
|
|
|
|
I created a dlll using atl libaray with VS2008, how can I debug dll(COM)?
|
|
|
|
|
john5632 wrote: how can I debug dll(COM)
I assume you have an Exe associated with that dll.
Place breakpoints in your DLL and mention the Executable(exe) as the startup program in your Dll.This way you can step in to the code and watch the variables etc
Hope this helps!
"Every morning I go through Forbes list of 40 richest people in the world. If my name is not in there, I go to work..!!!"
|
|
|
|
|
Create the test application in the same solution. Put the breakpoints in the COM dll sour code. Load the COM library in that test app, instantiate/query the required Interfaces/CoClasses. This is one of basic technique.
|
|
|
|
|
|
Lets say you have a simple project in VC++. Is there an
easy way (or a way) to compile that project so that the
program can be run as a web application? If so, we
visual studio compiler do you need to do this.
Please, any response any one can give me will be greatly
appreciated.
|
|
|
|
|
No there isn't an easy way to do it. You must redesign the application as a Web one (that is, roughly speaking, a client/server one).
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]
|
|
|
|
|
|
With that said, why not reply directly to the OP, because he won't otherwise receive any email notification of your post (which might actually be of benefit).
"Real men drive manual transmission" - Rajesh.
|
|
|
|
|
This is of course going to depend on what the C++ applicaiton is doing, and how (of if) it is communicating with other modules.
If it is talking to Hardware, doing DCOM, and generally being very much part of a PC, then no. It is impossible.
If it isnt, then how about just importing the code into a C# project? (And doing the necessary syntax changes)
==============================
Nothing to say.
|
|
|
|
|
I was going to say "it depends", but you were more eloquent about it!
|
|
|
|
|
As others have said, no, not in any universal way.
However, Google's browser Chrome can now run plugins written in C or C++ through their Native Client.
You'd have to use their modified GCC compiler, and it would only work in Chrome, but would let you re-compile to a web app.
|
|
|
|
|
Hi,
I have a button that is supposed to increase the size of an image when it's held down. I want it so that when the button is held down, I get a repeated event.
How do I know in my application that a button is held down, is there an event generated that is sent to the window procedure ?
|
|
|
|
|
You'll get a WM_CHAR message sent each time (a) a key is pressed or (b) a key has been held for long enough to trigger another 'key-pressed' event.
Here's a minimal WindowProcedure
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage (0);
break;
case WM_CHAR:
printf("Key Pressed: %c\n", wParam);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
|
|
|
|
|
thanks for the reply,
but when i say button I mean a button control not a keyboard key.
I'm looking for an event such as WM_COMMAND that is generated while the button is pressed until the button is released. WM_COMMAND though just is generated on click not press as well.
|
|
|
|
|
Since the keyboard auto-repeat, some of the 'low'-level stuff is already done.
If however, you want a button control to have auto-repeat, you'll have to set a timer yourself. I'd imagine that you would set(create) the timer when the particular button was pressed. Each time the timer is triggered, you'd check to see if the button's state indicated that it was pressed. If so, simply send yourself another WM_COMMAND message.
HOWEVER, this task is somewhat complicated by the fact that the WM_COMMAND is not sent by a button until either the mouse-button or the keyboard key that was used to press it is released, meaning that your first event is not fired until after the button is no longer pressed, hence no ability to auto-repeat.
I suspect that you'll need to create this button as a custom-control, handling both the drawing (reasonably easy using the DrawThemeBackground(sp?) function) and the keyboard/mouse handling.
Mouse handling should be pretty straight forward, using SetCapture and ReleaseCapture. You'll have to also work out which keyboard keys you want to be able to press the button too, setting the button's state to BS_PRESSED.
This sounds like about the kind of functionality that the spin-button control offers, albeit with a single button rather than a pair of them. To that end, to find a solution quickly, I'd probably start looking for code for a custom spin-button control, editing as needed to fulfil your needs.
|
|
|
|
|
thanks,
I've managed to get the holding button down to work. I just used a global veriable to track the state of the button via the WM_DRAWITEM notification and then in my program loop referred to this variable.
|
|
|
|
|
Bewdy!
Happy to help you scramble over that little obstacle.
|
|
|
|
|
See if you get BN_PUSHED[^] and BN_UNPUSHED[^] from the button, these are, as the documentation states, provided only for compatibility with 16-bit versions of Windows, so they might not work anymore, but if they do, you could try starting the timer with SetTimer[^] on BN_PUSHED and kill it with KillTimer[^] on BN_UNPUSHED, and do your zooming thing in the handler for WM_TIMER[^].
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> If it doesn't matter, it's antimatter.<
|
|
|
|
|
Hi all,
I am trying to read from text file using fscanf.But i am getting only last string.
Here is the code i am trying
FILE *p;
CString first,second;
p=fopen("E:\\Test.txt","r");
fscanf(p,"FirstName=%s",first);
fscanf(p,"SecondName=%s",second);
AfxMessageBox(first);
AfxMessageBox(second);
Here is the Text.txt file content:
FirstName=ee
SecondName=pp
But i am getting only first value "ee" in message box.where i am going wrong
Thanks
manju
|
|
|
|
|