|
In Some Old Code some validation is done in WM_KILLFOCUS.
Now We know that this is not a good way, But we don't wan't to change the code.
If Some User's closes the dialog using "Top Right Cross Button" the dialog and its Data
becomse invalid and after that the KillFocus comes.
In This case we dont want the killfocus event to happen.
Please suggest.
Stuck in a Problem
|
|
|
|
|
Indian Idol wrote:
In This case we dont want the killfocus event to happen.
maintain a FLAG, make it false when you receieve
SC_CLOSE in WM_SYSCOMMAND!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
hi,
I have thread id and Process id of the a application, now i want to get the main window handle of the application.
I know there is EnumThreadWindows function which can achive the same, but i am not sure how to use it and also i want to store the window handle after the call to EnumThreadWindows function, I have seens lot of samples which basically send event notification to the callback function for EnumThreadWindows which i don't want to do.
Thanks in advance,
Abhi Lahare
|
|
|
|
|
Hello,
I want to launch a perl script as the pre-build step with Visual C++ .NET 7.1.
But the paths to the different EXE files I want to use in this script are not known, even if they are in the PATH environment variable. If I launch my script by hand, and not by Visual C++, it works well.
After many trials, it seems that the paths memorised in PATH are not known in the context of the pre-build command line.
Is there a way to remedy to that?
Thanks in advance
Nolyann
|
|
|
|
|
In our tests a simple pre-build step like "perl -v " is working with no problem, i.e. the perl application is found according to PATH environment variable. It is difficult to reproduce your problem. Maybe you should show us your pre-build command?
|
|
|
|
|
Hello Viorel,
Thanks for answering.
Here is the non-working command line: perl.exe ..\create-getrevision.pl
Here is the working command line: C:\Perl\bin\perl.exe ..\create-getrevision.pl
This command is entered in the Project Properties dialog box, build results/before the build. These terms are maybe not the right translation of my german version of Visual C++...
C:\Perl\bin is in the PATH of the system variables part on my Windows XP.
For the non-working case, I get the following error message: The command "perl.exe" is either not correctly written or cannot be found.
Any idea?...
|
|
|
|
|
the following code cannot work under Windows 98.
dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; // default
dwAccessMode = GENERIC_WRITE | GENERIC_READ; // default
fileHandle = CreateFile("\\\\.\\C:",
dwAccessMode,
dwShareMode,
NULL,
OPEN_EXISTING,
0,
NULL);
the error code is 2, system cannot find the file.
Who can give me advice? Thanks in advance.
|
|
|
|
|
MSDN documentation for CreateFile function says that in Windows Me/98/95 "the file system restricts CreateFile to creating or opening files. You cannot create or open the [other] objects [...]". Therefore it seems you cannot open a volume in Windows 98.
I think you have to search for other approach for your problem. Maybe you should explain it here; perhaps it can be solved with other functions.
|
|
|
|
|
As Viorel said, you can't in Win95, 98 and Me.
But check out this article[^]
It doesn't give you the complete solution, since there are no logical sector to physical sector conversion, but you can make one yourself, using the information from the IO call IOCTL_DISK_GET_DRIVE_GEOMETRY
|
|
|
|
|
Amanda Davis wrote: the error code is 2, system cannot find the file.
Of course. MSDN plainly states, "Windows 95/98/Me: This technique does not work for opening a logical drive. Specifying a string in this form causes CreateFile to return an error."
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
however I want to use this handle to pass ASPI command to the device.
I really lost my way.
|
|
|
|
|
HI,
How to call "GetDlgItem(IDC_Button_Search)->EnableWindow(FALSE);" inside a static method?
The above statement throws error inside a static member function.
Thanks
Thanks
Raji
|
|
|
|
|
You cannot call non-static member functions inside a static function. The reason is simple: static function don't 'belong' to a particular instance of the class (they don't receive the this parameter), thus, you can only access members (functions and variables) that doesn't belong to a particular instance also (so only static members).
The solution to remove the static but I don't think this will solve the problem. In general, there is a way to explicitely pass the this parameter so that the function can use this parameter and call a public function from that particular instance.
|
|
|
|
|
Inside your static function you should know the HWND value of your dialog. In this case you can try:
EnableWindow(GetDlgItem(hDlg, IDC_Button_Search), FALSE);
I hope this helps.
|
|
|
|
|
EnableWindow(GetDlgItem(hDlg, IDC_Button_Search), FALSE); again throws the same error..
Any other clues please!
Thanks
Raji
|
|
|
|
|
RajiRaghu wrote:
[...] again throws the same error..
Any other clues please!
What error is thrown in both cases? I think you should give us more details.
|
|
|
|
|
error C2660: 'CWnd::EnableWindow' : function does not take 2 arguments
error C2352: 'CWnd::GetDlgItem' : illegal call of non-static member function
Thanks
Raji
|
|
|
|
|
It seems your static function is a member of a window class. In this case try to use ":: ":
::EnableWindow(::GetDlgItem(hDlg, IDC_Button_Search), FALSE);
|
|
|
|
|
RajiRaghu wrote: How to call "GetDlgItem(IDC_Button_Search)->EnableWindow(FALSE);" inside a static method?
you need the pointer to that window before proceeding i.e.
wndPointer->GetDlgItem(IDC_Button_Search)->EnableWindow(FALSE);
where wndPointer is pointer to that dialog window!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Since you know the ID of the control, you do not need to use MFC's version of GetDlgItem(...) . Something like:
HWND hWnd = ::GetDlgItem( hWndDlg, IDC_Button_Search );
if( hWnd )
{
::EnableWindow( hWnd, FALSE );
} Should work just fine. Never be afraid to go old-school instead of jumping through so many hoops just to use MFC's version of something.
Peace!
-=- James If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! DeleteFXPFiles & CheckFavorites (Please rate this post!)
|
|
|
|
|
You can use GetDlgItem for get hwnd from your controls if you know ID form control
CWnd *pWnd=GetDlgItem(IDC_CONTROL) and HWND m_hwnd=::GetDlgItem(hWnd,IDC_CONTROL)
|
|
|
|
|
Hello,
Suppose the following code:
<br />
char * f(void)<br />
{<br />
return "Hello";<br />
}<br />
<br />
char *s = f();<br />
is this code safe? in other words, does s always point to the string "Hello"?
what about these ones?
<br />
char *s = "All ";<br />
strcat(s, f());<br />
<br />
CString s = f();<br />
my aim is to know how these codes are translated to assembly language.
|
|
|
|
|
Ali Tavakol wrote: is this code safe?
Nope. You are returning the address of a temporary string. Thus, the memory is not protected anymore. Sure, the pointers still 'points' at a the same address but the contents are not protected anymore, thus they can be overwritten.
|
|
|
|
|
Ali Tavakol wrote: is this code safe?
nope. your f() function returns a pointer to a local variable, so, outside the function, the caller could get anything, like an invalid pointer.
Ali Tavakol wrote: strcpy(f(), "All");
what ??? you're trying to write "All" into a function ??
|
|
|
|
|
toxcct wrote: what ??? you're trying to write "All" into a function ??
No, he tries to write "All" in the pointer that is returned by the function. If he removed the (), then he would try to write something at the address of the function.
|
|
|
|