• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 336
  • Last Modified:

program focus

#include <iostream>
#include <windows.h>


using namespace std;




int main ()
{
      HWND hwnd = FindWindow(NULL,"notepad");
      
      MoveWindow(hwnd, 100, 100, 400, 200, TRUE);
      
      
      
      
      
      
      
      return 0;
}






this is my small test program, it pops a console window briefly. is it possible to make it NOT pop the console program, in other words, have it not taking focus at all?



also, given hwnd, how do I focus a window?
0
Troudeloup
Asked:
Troudeloup
  • 15
  • 13
  • 2
1 Solution
 
lucky_jamesCommented:
if you want not it to have the focus, then why dont you make it invisible?

use ShowWindow(SW_HIDE);

Let me know if you have any doubts.
0
 
TroudeloupAuthor Commented:
no I have a handle of a window currently in the background and i make to focus it.

no i don't want it to be invisible.
0
 
lucky_jamesCommented:
check out:
http://blogs.msdn.com/oldnewthing/archive/2004/08/02/205624.aspx

Let me know if you have any doubts.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
TroudeloupAuthor Commented:
i don't want a dialogue box.
0
 
lucky_jamesCommented:
not a problem.......use file i/o instead of normal i/o operations

check out:
http://www.mkssoftware.com/docs/man3/fgetln.3.asp

Hope it helps.
0
 
lucky_jamesCommented:
sorry, ignore above comment.

0
 
lucky_jamesCommented:
to get focus :
SwitchToThisWindow
check out :
http://msdn2.microsoft.com/en-us/library/ms633553.aspx

and to switch the window to the background or even bring it to front:
SetWindowPos
check out:
http://msdn2.microsoft.com/en-us/library/ms633545.aspx
0
 
lucky_jamesCommented:
Let me know if you have any doubt .......
0
 
TroudeloupAuthor Commented:
this one doesn't work














#include <iostream>
#include <windows.h>


using namespace std;




int main ()
{
      HWND hwnd = FindWindow(NULL,"notepad");
      
      // MoveWindow(hwnd, 100, 100, 400, 200, TRUE);
      
      
      ::SwitchToThisWindow( hwnd,  false );

      
      
      
      
      return 0;
}

0
 
lucky_jamesCommented:
>>::SwitchToThisWindow( hwnd,  false );

this is used to FOCUS on your application.
false parameter just signifies that the focus is not using the alt+tab sequence.


To keep in the background. please try SetWindowPos .......

revert back if you face any issues.
0
 
TroudeloupAuthor Commented:
you mean i should change that false to true for it to work?
0
 
TroudeloupAuthor Commented:
this is the error message

focus_test.cpp:17: error: `::SwitchToThisWindow' has not been declared
0
 
lucky_jamesCommented:
i mean if you want your window to run behind other applications.....then dont use SwitchToThisWindow.

Use SetWindowPos.
0
 
TroudeloupAuthor Commented:
no i want to focus the window with this hwnd.


why do I have that error message?
0
 
lucky_jamesCommented:
>>`::SwitchToThisWindow' has not been declared

#include "Windows.h"

is the solution.
0
 
lucky_jamesCommented:
oh then use ::SwitchToThisWindow( hwnd,  true );
0
 
TroudeloupAuthor Commented:
I already have

#include <windows.h>



is this different?

#include "windows.h"
0
 
TroudeloupAuthor Commented:
0
 
lucky_jamesCommented:

>>is this different?
no its not different.
0
 
TroudeloupAuthor Commented:

why do I have that error message?

::SwitchToThisWindow' has not been declared
0
 
lucky_jamesCommented:
try without scope resolution operator.
SwitchToThisWindow
if your findwindow is working then SwitchToThisWindow should also work as both are defined in user32.dll and declared in windows.h
0
 
TroudeloupAuthor Commented:
#include <iostream>
#include <windows.h>

using namespace std;




int main ()
{
      HWND hwnd = FindWindow(NULL,"notepad");
      
      // MoveWindow(hwnd, 100, 100, 400, 200, TRUE);
      
      cout << hwnd << endl;
      
      switchtothisWindow( hwnd,  false );

      
      
      
      
      return 0;
}





this gets the same error message
0
 
lucky_jamesCommented:
you are using "switchtothisWindow" and it is "SwitchToThisWindow". The cases you are using are different. :)
0
 
TroudeloupAuthor Commented:
#include <iostream>
#include <windows.h>

using namespace std;




int main ()
{
      HWND hwnd = FindWindow(NULL,"");
      
      // MoveWindow(hwnd, 100, 100, 400, 200, TRUE);
      
      cout << hwnd << endl;
      
      SwitchToThisWindow( hwnd,  false );

      
      
      
      
      return 0;
}






nope, doesn't work.
0
 
itsmeandnobodyelseCommented:
If you don't want a console window you should turn your prog to a WIN32 prog.

Goto the project properties, Linker - System and change from 'Console (/subsystem:console)' to 'Windows (/subsystem:windows)'. Both for 'Debug' and 'Release' configuration.

Then, replace

      int main()  

by

      int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);

Regards, Alex
0
 
TroudeloupAuthor Commented:
how do I do a win32 prog with generic c++ code?

I use g++.


also, can you take a look of the code I posted?
0
 
lucky_jamesCommented:
>>SwitchToThisWindow( hwnd,  false );
try using with true.
0
 
TroudeloupAuthor Commented:
ok i ll say it again:

it still pops this:

focus_test.cpp:17: error: `SwitchToThisWindow' was not declared in this scope


how many times do I have to tell you that?!
0
 
lucky_jamesCommented:
>>how many times do I have to tell you that?!
Troudeloup, would have been gud if you had told me in ur previous post. By "It doesn't work", i thought you are into the functionality rather than compile time errors.

Anyway, thanks.
0
 
itsmeandnobodyelseCommented:
>>>> how do I do a win32 prog with generic c++ code?
win32 is a properietary platform. There is no generic code c++ for a platform specific thing.

>>>> I use g++.
Check the docs whether they support  linker option

    /subsystem:windows

If yes, it should work with g++ as well.

>>>> SwitchToThisWindow( hwnd,  false );

Did you try the SetFocus instead?

0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 15
  • 13
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now