|
Is possible to create a toolbar or dialogue bar with having icons justificated on both left and right? I is want to have differents sets of icons and am wanting to separates them by putting on left or on the right.
Thanks with muchly
|
|
|
|
|
When you want to justify to the right you need to use the Indent function
CToolbarCtrl::SetIndent
Best Regards
Carlos Antollini.
Pi Five[^]Creator
|
|
|
|
|
Is interest. I will checking out.
You are very thankful for my being helped.
|
|
|
|
|
I have now created an application that utilises the createpipe() function,
based on the response that I got yesterday. The application that I am trying to control only uses function keys(F2,F3, etc..), it does not accept text commands. I have tried using Virtual Key Codes (VK_F2, VK_ENTER, etc,..), however this does not seem to have any effect on the application that I am trying to control. Again, does anybody have any ideas?
Thanks again in advance.
|
|
|
|
|
Have you looked at the SendInput API in Win32?
|
|
|
|
|
I am trying to create an application that will take an ascii text file when dropped onto its Icon.
The application needs to be able to open this file for reading and then create a new ascii text file for writing.
Can anyone help.
Kind regards in advance.
|
|
|
|
|
Check out CodeProject code section.
http://www.codeproject.com/file/cppfilesdragdrop.asp
Kuphryn
|
|
|
|
|
|
Hi, I'm writing an international application, and therefore, I need to display dates and times using the user-locale. When I go to: Control Panel->Regional Settings->Regional Options tab->customize->Date tab, I see TWO date formats: SHORT and LONG.
Now, I write the following lines in my code:
COleDateTime date;
date.SetDate(2003,10,23);
CString s = date.Format((DWORD)VAR_DATEVALUEONLY); // format the date only
When I display 's', the contents of 's' are the SHORT version of the date, as it is configured in the dialog mentioned above.
My question is : how does COleDateTime know to choose the SHORT version and not the LONG version? Is it configurable through code? The reason I'm asking, is that later on I need to use the same string in order to populate another COleDateTime object, using the COleDateTime::ParseDateTime method, and I have to be sure that the method will work. As far as my tests went, ParseDateTime FAILED when given a LONG date string, so I have to be absolutely sure that COleDateTime::Format will ALWAYS use the SHORT date. And if possible, issue some command to ensure this.
Any ideas? Thanks.
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
It might have something to do with the VT_DATE type being used by COleDateTime .
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
Can you please explain what you mean? As far as I know, the VT_DATE is the only date-related variant type... it's not like there's a VT_LONGDATE or something like that... how do I know that VT_DATE is associated with the short date-time version?
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
Why don't you use COleDateTime::Format(_T("%m/%d/%Y")); ?
|
|
|
|
|
Because the application must be internationalized, that is, culture and language sensitive. If the user uses a locale that presents dates as YYYY-MM-DD (as in Japan, for example), I cannot force a different date format on him.
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
ParseDateTime is meant to work in all cases (well that's according to the documentation) and I think you can use Format(_T("%x")) or %#x to get short or long format to select the short or long format...
|
|
|
|
|
thanks! I haven't noticed these tokens...
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
Instead of using VAR_DATEVALUEONLY , maybe you can use GetLocaleInfo using either LOCALE_SLONGDATE or LOCALE_SSHORTDATE to return the locale-formatted string, and use that in COleDateTime::Format() .
I've never tried this personally, but I have something similar that does work.
HTH
The kindest thing you can do for a stupid person, and for the gene pool, is to let him expire of his own dumb choices.
[Roger Wright on stupid people]
We're like private member functions
[John Theal on R&D]
We're figuring out the parent thing as we go though. Kinda like setting up Linux for the first time ya' know...
[Nitron]
|
|
|
|
|
I am using Internetdial function of Wininet in Visual C++ 6.0 to get an Internet connection via a GPRS-Modem. Would it be possible to disable the Dial-Up Connection dialog box when using the Internetdial function?
Thanks in advance!
StefanJ
|
|
|
|
|
I have a dialog with a button and a progressbar. When the user clicks the button a lengthy process is initiated. During this process I want to increment the progressbar on a regular interval. I did this by setting a timer when the button is clicked, but the OnTimer function is never called. However it is called when I set the timer in the OnInitDialog function.
It seems that the lengthy process that is initiated in the 'OnMyButtonClicked' function blocks the timer. Anyone knows a sollution for this problem?
|
|
|
|
|
you need to have event pumped into your lenghty process.
I thing there are samples here on code project, have a look around.
Maximilien Lincourt
"Never underestimate the bandwidth of a station wagon filled with backup tapes." ("Computer Networks" by Andrew S Tannenbaum )
|
|
|
|
|
Brian van der Beek wrote:
When the user clicks the button a lengthy process is initiated.
Do this lengthy progress in a worker thread. Have this worker thread send PostMessages to its parent(View), which in turn sets the Progress bar.
For threads, I recommend this article.[^]
[edit] You can also use a message pump as suggested (code is in the Prosise-book), but that tends to get complicated.
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
I now use a worker thread and everything works fine. Thanks for your reply.
|
|
|
|
|
Brian van der Beek wrote:
I now use a worker thread
You did this within 20 minutes?
Wow - you code pretty fast!
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
In Win32 you should use a worker thread to handle lengthy processes in the background so that normal message passing can continue.
If you do not want to use a worker thread then you will need to to use one of the old tricks used before mult-threading.
1) Use some thing like this
if( PeekMessage(...) ) // in lengthy process loop
{
DispatchMessage(...)
}
to allow other messages to be processed.
OR
2) Use a user defined message that you keeping posting to your self until the job is fininish. There by allowing other messages to flow. This works as follows:
PostMessage(MY_MESSAGE); // Get processing started
...
Proc(MY_MESSAGE)
{
swicth(message)
{
case MY_MESSAGE:
// do part of processing
if( !done )
PostMessage(MY_MESSAGE);
break.
}
Both of the above method will increase the amount of time it take to do the lengthy process, but they both work to solve your problem.
I hope this give you some ideas as to how to solve your problem.
INTP
|
|
|
|
|
I have a dialog with a button and a progressbar. When the user clicks the button a lengthy process is initiated. During this process I want increment the progressbar on a regular interval. I did this by setting a timer when the button is clicked, but the OnTimer function is never called. However it is called when I set the timer in the OnInitDialog function.
It seems that the lengthy process that is initiated in the 'OnMyButtonClicked' function blocks the timer. Anyone knows a sollution for this problem?
|
|
|
|
|
I am not sure if this will help, but does this "lengthy process" have a DO/FOR/WHILE loop? If so the task is fairly straight forward. Here is an example of a ProgressBar function:
void CMyDialog::ProgressBar()
{
int percentage=0; //variable initialisation
char temp[100]; //
//The following line will calculate the Progress bar percentage
//The "Records" is a global UINT which increments each time through the loop
//The "TotalRecords" is the total number of Records in the loop
percentage=(int)(((float)Records/(float)TotalRecords)*100.0);
//"m_Progress" is the variable attached to your dialog
//This will set the position of the progress bar depending on the percentage
m_Progress.SetPos(percentage);
//This will update the "m_Progress" variable with the new position
UpdateData(FALSE);
}
Call this function every time you wish to update the progress bar.
Dont forget to update the "Records" variable before calling this function.
Hope this helps.
|
|
|
|