|
Hi,
I really need to disable task-switching in a program, but am having difficulties.
First, I should explain *why* I want to disable task-switching, as I am aware that this can be undesirable behaviour. I want to use this feature in a game engine, and it is only an optional feature (not forced behaviour). For instance, if the player decides to map certain keys to Alt or Tab, they can can choose to disable task-switching. (Eg. If they map Alt to "jump" and task-switch, they might flip back to the game to find that they have jumped to their death...)
So, granted that I *do* want to do this, how do I go about achieving this in a full screen game (DirectX, though I doubt that makes any difference)? I have read and tried the article at MSDN on this:
http://support.microsoft.com/default.aspx?kbid=226359
However, this only works so long as the game is in windowed mode. As soon as the user switches to full screen, task-switching is restored for some reason. (I am testing on a Win Me system at the moment - I don't have access to my XP system for a few days, so I can't test out both methods.)
Does anybody know how I can go about doing this? Any suggestions or links much appreciated.
Many thanks,
KB
|
|
|
|
|
|
I wrote these codes in FormView0.h:
<br />
CViewPropertySheet m_PropSheet;<br />
<br />
CMYPropertyPage m_Page1; <br />
CMYPropertyPage2 m_Page2;<br />
Then wrote these in FormView0.cpp
<br />
BOOL CFormView0::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) <br />
{<br />
<br />
m_PropSheet.AddPage(&m_Page1);<br />
m_PropSheet.AddPage(&m_Page2);<br />
<br />
<br />
if (!m_PropSheet.Create(this)) {<br />
DestroyWindow();<br />
return FALSE;<br />
}<br />
<br />
return TRUE;<br />
}<br />
after i built, it passed。however, Debug Assertion Failed:
Winfrm.cpp Line(1177)
WinCore.cpp Line(2198)
it's my reference below
http://www.codeguru.com/propertysheet/inside_formview.shtml
but it's MDI.
what should i do. please help me~!
|
|
|
|
|
Override the virtual function OnInitialUpdate() and put your propertysheet code after CFormView::OnInitialUpdate(). I believe you cannot put anything on the form until it has been initialized.
void CForemanView0::OnInitialUpdate() <br />
{<br />
CFormView::OnInitialUpdate();<br />
<br />
<br />
}
|
|
|
|
|
I made a multithreaded tcp server which loops on a listening socket which accepts the connections on their own socket and spins them off in their own thread. In the thread, it just loops on the recv() call. But the recv() call doesnt return unless something is read. Now i need to be able to send data to any of the sockets or all sockets at any given time, i'm not very experienced with threads so i really didn't know if you could call send() while a recv() is waiting (which would be the case if one socket would receive something and i would call send() on all the sockets to broadcast it back) but i read somewhere that u couldn't read if it was writing and couldnt write if it was reading or something. So how do i handle this?? I've already tried to come up with a number of (be it somewhat rediculous) solutions like a main buffer in which all the receives are put and a counter for each socket keeps track of how many lines each socket needs to get out of the buffer to send, but then u get another problem because then the sockets will only send when they have received something.. Of course if it is safe to call recv() without knowing if somewhere else send() is being called then pls let me know, because i thought i read somewhere in the winsock API that it isnt but i looked again and couldnt find it anymore.
Thanks
Kuniva
--------------------------------------------
|
|
|
|
|
You can safely do a send and recv on the same socket at the same time, so no need to start inventing all manner of problems for yourself!
|
|
|
|
|
there is some very good information on your subject here on codeproject:
http://www.codeproject.com/internet/
also, take a look at the "reusable, high performance, socket server class"...
nb
|
|
|
|
|
wow thanks! being able to call it at the same time makes it easier hehe. I already looked on CP though and also at that reusable class but that uses IOCP and i am targetting a win98 machine so that wouldnt work..
Kuniva
--------------------------------------------
|
|
|
|
|
You can use select() and specify maxtime your recv() will be waiting.
When time expires recv() will return even if no data arrived.
So, you can create arriving loop and inside of it you will be able to send().
Regards
"...Ability to type is not enough to become a Programmer. Unless you type in VB. But then again you have to type really fast..."
Me
|
|
|
|
|
Oh thanks, i was just wondering about something like that since i wanted to put in something to check for keystrokes. Thanks
Kuniva
--------------------------------------------
|
|
|
|
|
as on directX to do that some scene was always over the whole on screen?
|
|
|
|
|
If you want to switch to full screen mode, in d3d use the Windowed parameter in PresentParameters. In directdraw have a look at the SetCooperativeLevel() function.
Lorenz Prem
Microsoft Corporation
|
|
|
|
|
I'm looking for an example in VC++ 6 to hook (or subclassing) the RAS function (in rasapi32.dll). I'd like that my routine prevent every connection to the internet (with the browser or other applications): my routine must do a control about the number used. HOW CAN I DO THIS ?
Can anyone help me ?
|
|
|
|
|
Use RasEnumConnections() to get a list of connections.
RasGetConnectStatus will tell you if that connections is active.
RasHangUp will kill the connections.
I used CWnd::SetTimer() to monitor for connections.
This will not prevent a DSL/Modem or network connection from accessing the internet.
|
|
|
|
|
Really thanks for your help.
I'll try your solution.
Thanks again.
|
|
|
|
|
Hello,
how can I add a sizing gripper to a MFC dialog? (The dialog doesn't have any scrollbars or statusbars).
The dialog supports resizing, it's just the missing resizing gripper.
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
haven't tried it out.. but (as much as i know.. from the back of my head)
using the WS_THICKFRAME style should do the trick..
"I'm from the South Bronx, and I don't care what you say: those cows look dangerous." U.S. Secretary of State Colin Powell at George Bush's ranch in Texas
|
|
|
|
|
My dialog has the WS_THICKFRAME style and it is resizable, but it doesn't have a sizing gripper.
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Here is some code I use. It is part of a class, but should give you what you need.
bool
CWin_Resize::TrackCreateSize( bool want_sizebmp )
{
CRect rc;
ASSERT( IsValid() );
m_pWnd->GetWindowRect( &rc );
m_minWidth = rc.Width();
m_minHeight = rc.Height();
m_pWnd->GetClientRect( &rc );
m_old_cx = rc.Width();
m_old_cy = rc.Height();
m_bIs_Resizeable = ( m_pWnd->GetStyle() & WS_THICKFRAME ) ne 0;
if( want_sizebmp
&& m_bIs_Resizeable
)
{
if( !m_bmSizeBitmap.LoadOEMBitmap( OBM_SIZE ) )
TRACE0(_T("*** ERROR: CWin_Resize::OnInitDialog(): LoadOEMBitmap() failed.\n"));
else
{
BITMAP BitMap;
m_pWnd->GetClientRect( &rc );
m_bmSizeBitmap.GetBitmap( &BitMap );
CRect szrc( rc.Width() - BitMap.bmWidth, rc.Height() - BitMap.bmHeight, rc.Width(), rc.Height() );
if( !m_wndSizeBitmap.Create( NULL, WS_VISIBLE | WS_CHILD | SS_BITMAP, szrc, m_pWnd )
|| !m_wndSizeBitmap.ModifyStyleEx( 0, WS_EX_TRANSPARENT )
)
TRACE0( _T( "*** ERROR CWin_Resize::OnInitDialog() : Can't create bitmap control\n" ) );
else
{
m_wndSizeBitmap.SetBitmap( m_bmSizeBitmap );
Ctrl_SetAnchorInfo( m_wndSizeBitmap.m_hWnd, ANCHOR_RIGHT | ANCHOR_BOTTOM );
}
}
}
RestoreSize();
return TRUE;
}
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
What is Ctrl_SetAnchorInfo ?
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Dominik Reichl wrote:
What is Ctrl_SetAnchorInfo?
Is is part of my resizeable dialog class code.
m_wndSizeBitmap is a CStatic and this adds it to the list of controls that need to be moved when a dialog is resized. You've got your own resizing code I think you said, so just handle the CStatic in that.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Ok, so this is only a bitmap.
But when I move the mouse cursor on the resizing bitmap, it doesn't change to the resizing cursor... resizing only works when I point on a side or corner of the window...
I would like to make the resizing bitmap work like a gripper, so with real resizing cursor, as Internet Explorer does it.
Any idea or did I overlook something?
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Dominik Reichl wrote:
Ok, so this is only a bitmap.
But when I move the mouse cursor on the resizing bitmap, it doesn't change to the resizing cursor... resizing only works when I point on a side or corner of the window...
I would like to make the resizing bitmap work like a gripper, so with real resizing cursor, as Internet Explorer does it.
Any idea or did I overlook something?
I haven't bothered with that. The bmp us just a visual clue that the dialog is resizeable. They then drag the edges as per normal. I think that's enough.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Neville Franks wrote:
I haven't bothered with that. The bmp us just a visual clue that the dialog is resizeable. They then drag the edges as per normal. I think that's enough.
Create a new scrollbar class (I called it "CInvisibleGripper" ) derived from CScrollBar which overrides the OnPaint method (which simply doesn't draw itself). So you have a hidden scrollbar class. Create a sizebox/gripper as the others have posted below, and you have a working gripper
I've done it that way.
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
By "sizing gripper" do you mean the triangular bitmap found at the lower right corner of an IE window? If so, just create a status bar in your dialog and position it at the bottom edge. You'll need to resize and reposition the status bar in your OnSize() handler. I don't believe the autosize option works for dialogs.
See this page[^] for an example screenshot of a sizing grip in a dialog based app.
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|