gamedevlists-windows Mailing List for gamedev (Page 2)
Brought to you by:
vexxed72
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(48) |
Oct
(58) |
Nov
(49) |
Dec
(38) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(124) |
Feb
(83) |
Mar
(17) |
Apr
(37) |
May
(12) |
Jun
(20) |
Jul
(47) |
Aug
(74) |
Sep
(62) |
Oct
(72) |
Nov
(54) |
Dec
(13) |
2003 |
Jan
(36) |
Feb
(8) |
Mar
(38) |
Apr
(3) |
May
(6) |
Jun
(133) |
Jul
(20) |
Aug
(18) |
Sep
(12) |
Oct
(4) |
Nov
(28) |
Dec
(36) |
2004 |
Jan
(22) |
Feb
(51) |
Mar
(28) |
Apr
(9) |
May
(20) |
Jun
(9) |
Jul
(37) |
Aug
(20) |
Sep
(23) |
Oct
(15) |
Nov
(23) |
Dec
(27) |
2005 |
Jan
(22) |
Feb
(20) |
Mar
(5) |
Apr
(14) |
May
(10) |
Jun
|
Jul
(6) |
Aug
(6) |
Sep
|
Oct
(12) |
Nov
(1) |
Dec
|
2006 |
Jan
(18) |
Feb
(4) |
Mar
(3) |
Apr
(6) |
May
(4) |
Jun
(3) |
Jul
(16) |
Aug
(40) |
Sep
(6) |
Oct
(1) |
Nov
|
Dec
(2) |
2007 |
Jan
(5) |
Feb
(2) |
Mar
(4) |
Apr
(1) |
May
(13) |
Jun
|
Jul
(26) |
Aug
(3) |
Sep
(10) |
Oct
|
Nov
(4) |
Dec
(5) |
2008 |
Jan
(1) |
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Oscar C. <oc...@fr...> - 2007-09-06 16:40:51
|
> Are you resetting display mode when you receive WM_SYSCOMMAND,SC_MINIMIZE? I'm letting the default wndproc handle that message, my actual display is managed with D3D and uses the DEVICELOST error codes to trigger resets without touching the Win32 API. > Also one trick more... in some apps I think I used to set a bool > when receiveing a window resize/minimize/maximize command and then > just eat all window size related messages without processing them Thanks :-) Oscar. ----- Original Message ----- From: "Alen Ladavac" <ale...@cr...> To: "Game Development for MS Windows" <gam...@li...> Sent: Thursday, September 06, 2007 3:48 PM Subject: Re: [GD-Windows] Alt+Tab in fullscreen with no other apps running > Are you resetting display mode when you receive WM_SYSCOMMAND,SC_MINIMIZE? > > Also one trick more... in some apps I think I used to set a bool > when receiveing a window resize/minimize/maximize command and then > just eat all window size related messages without processing them > until we empty the queue (no more messages pending). This kills all > quirks that Windows throw on you as sideeffects of changing a window > size. > > Alen > > Oscar wrote: > >> Replying to my own post... > >> I eventually got it working by recording the HWND passed with the >> WM_CANCELMODE message, then next time around my game loop calling >> ShowWindow( hWnd, SW_MINIMIZE ). This may not be the ideal solution to >> the >> problem so I'd still be interested in hearing if there's a better way. > >> Thanks to all who helped, > >> Oscar. > > >> ----- Original Message ----- >> From: "Oscar Cooper" <oc...@fr...> >> To: "Game Development for MS Windows" >> <gam...@li...> >> Sent: Thursday, September 06, 2007 12:54 PM >> Subject: Re: [GD-Windows] Alt+Tab in fullscreen with no other apps >> running > > >>>I still haven't got this working, testing under WinXP >>> >>> Alen's idea gets me most of the way there, but my window gets restored >>> immediately after being minimised. Looking through the windows message >>> trace, it looks like the minimise completes successfully: the >>> WM_SYSCOMMAND >>> triggers a bunch of further messages including the WM_ACTIVATE >>> (WA_INACTIVE) >>> and WM_ACTIVATEAPP (wParam=FALSE). However I then immediately get a >>> WM_ACTIVATE (WA_ACTIVE) message, which I assume is generated by Windows >>> in >>> response to certain properties of my window or because I'm not handling >>> some >>> messages correctly. >>> >>> In addition to Alen's code I've also tried experimenting with the window >>> style flags, and even tried calling SetWindowPos to force my window >>> first >>> to >>> the bottom of the z-order and then again to put it back on top, to make >>> sure >>> it's not TOPMOST, but I'm still missing something. >>> >>> I hate working with API's I don't know very well, I feel like such a >>> n00b >>> ;-> >>> >>> Can anyone bail me out? >>> >>> Cheers, >>> >>> Oscar. >>> >>> >>> >>> ----- Original Message ----- >>> From: "Alen Ladavac" <ale...@cr...> >>> To: <gam...@li...> >>> Sent: Tuesday, September 04, 2007 5:03 PM >>> Subject: Re: [GD-Windows] Alt+Tab in fullscreen with no other apps >>> running >>> >>> >>>> Hi Oscar, >>>> >>>> IIRC, we've always been doing something like >>>> >>>> if( (msg.message==WM_ACTIVATE && (LOWORD(msg.wParam)==WA_INACTIVE >>>> || >>>> HIWORD(msg.wParam))) >>>> || msg.message==WM_CANCELMODE >>>> || msg.message==WM_KILLFOCUS >>>> || (msg.message==WM_ACTIVATEAPP && !msg.wParam)) { >>>> >>>> if (bInFullScreen) { >>>> PostMessage(NULL, WM_SYSCOMMAND, SC_MINIMIZE, 0); >>>> } >>>> >>>> That seems to work for us, YMMV. >>>> >>>> HTH, >>>> Alen >>>> >>>> Oscar wrote: >>>> >>>>> Hi, >>>> >>>>> Does anyone know if there's something I have to do (or avoid doing) to >>>>> make >>>>> my game minimise when the player hits Alt+Tab whilst running in >>>>> fullscreen >>>>> with no other apps running? >>>> >>>>> My game isn't minimising in pre-Vista versions of Windows, but other >>>>> games >>>>> seem to do so. Windows isn't sending me any WM_ACTIVATE or >>>>> WM_ACTIVATEAPP >>>>> messages. I am getting WM_NCACTIVATE and WM_CANCELMODE, and I'm >>>>> passing >>>>> these on to the default WndProc expecting it to handle any necessary >>>>> plumbing. >>>> >>>>> With other apps running the Alt+Tab behaviour is correct in >>>>> fullscreen, >>>>> but >>>>> in this case Windows is sending me a completely different sequence of >>>>> messages. >>>> >>>>> Thanks in advance, >>>> >>>>> Oscar Cooper >>>>> Lead Programmer >>>>> Frontier Developments Ltd >>>> >>>> >>>> >>>>> ------------------------------------------------------------------------- >>>>> This SF.net email is sponsored by: Splunk Inc. >>>>> Still grepping through log files to find problems? Stop. >>>>> Now Search log events and configuration files using AJAX and a >>>>> browser. >>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/ >>>>> _______________________________________________ >>>>> Gamedevlists-windows mailing list >>>>> Gam...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >>>>> Archives: >>>>> http://sourceforge.net/mailarchive/forum.php?forum_id=555 >>>> >>>> >>>> >>>> ------------------------------------------------------------------------- >>>> This SF.net email is sponsored by: Splunk Inc. >>>> Still grepping through log files to find problems? Stop. >>>> Now Search log events and configuration files using AJAX and a browser. >>>> Download your FREE copy of Splunk now >> http://get.splunk.com/ >>>> _______________________________________________ >>>> Gamedevlists-windows mailing list >>>> Gam...@li... >>>> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >>>> Archives: >>>> http://sourceforge.net/mailarchive/forum.php?forum_id=555 >>>> >>> >>> >>> >>> ------------------------------------------------------------------------- >>> This SF.net email is sponsored by: Splunk Inc. >>> Still grepping through log files to find problems? Stop. >>> Now Search log events and configuration files using AJAX and a browser. >>> Download your FREE copy of Splunk now >> http://get.splunk.com/ >>> _______________________________________________ >>> Gamedevlists-windows mailing list >>> Gam...@li... >>> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >>> Archives: >>> http://sourceforge.net/mailarchive/forum.php?forum_id=555 >>> > > > >> ------------------------------------------------------------------------- >> This SF.net email is sponsored by: Splunk Inc. >> Still grepping through log files to find problems? Stop. >> Now Search log events and configuration files using AJAX and a browser. >> Download your FREE copy of Splunk now >> http://get.splunk.com/ >> _______________________________________________ >> Gamedevlists-windows mailing list >> Gam...@li... >> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >> Archives: >> http://sourceforge.net/mailarchive/forum.php?forum_id=555 > > > > -- > Alen > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=555 > |
From: Alen L. <ale...@cr...> - 2007-09-06 14:48:21
|
Are you resetting display mode when you receive WM_SYSCOMMAND,SC_MINIMIZE? Also one trick more... in some apps I think I used to set a bool when receiveing a window resize/minimize/maximize command and then just eat all window size related messages without processing them until we empty the queue (no more messages pending). This kills all quirks that Windows throw on you as sideeffects of changing a window size. Alen Oscar wrote: > Replying to my own post... > I eventually got it working by recording the HWND passed with the > WM_CANCELMODE message, then next time around my game loop calling > ShowWindow( hWnd, SW_MINIMIZE ). This may not be the ideal solution to the > problem so I'd still be interested in hearing if there's a better way. > Thanks to all who helped, > Oscar. > ----- Original Message ----- > From: "Oscar Cooper" <oc...@fr...> > To: "Game Development for MS Windows" > <gam...@li...> > Sent: Thursday, September 06, 2007 12:54 PM > Subject: Re: [GD-Windows] Alt+Tab in fullscreen with no other apps running >>I still haven't got this working, testing under WinXP >> >> Alen's idea gets me most of the way there, but my window gets restored >> immediately after being minimised. Looking through the windows message >> trace, it looks like the minimise completes successfully: the >> WM_SYSCOMMAND >> triggers a bunch of further messages including the WM_ACTIVATE >> (WA_INACTIVE) >> and WM_ACTIVATEAPP (wParam=FALSE). However I then immediately get a >> WM_ACTIVATE (WA_ACTIVE) message, which I assume is generated by Windows in >> response to certain properties of my window or because I'm not handling >> some >> messages correctly. >> >> In addition to Alen's code I've also tried experimenting with the window >> style flags, and even tried calling SetWindowPos to force my window first >> to >> the bottom of the z-order and then again to put it back on top, to make >> sure >> it's not TOPMOST, but I'm still missing something. >> >> I hate working with API's I don't know very well, I feel like such a n00b >> ;-> >> >> Can anyone bail me out? >> >> Cheers, >> >> Oscar. >> >> >> >> ----- Original Message ----- >> From: "Alen Ladavac" <ale...@cr...> >> To: <gam...@li...> >> Sent: Tuesday, September 04, 2007 5:03 PM >> Subject: Re: [GD-Windows] Alt+Tab in fullscreen with no other apps running >> >> >>> Hi Oscar, >>> >>> IIRC, we've always been doing something like >>> >>> if( (msg.message==WM_ACTIVATE && (LOWORD(msg.wParam)==WA_INACTIVE || >>> HIWORD(msg.wParam))) >>> || msg.message==WM_CANCELMODE >>> || msg.message==WM_KILLFOCUS >>> || (msg.message==WM_ACTIVATEAPP && !msg.wParam)) { >>> >>> if (bInFullScreen) { >>> PostMessage(NULL, WM_SYSCOMMAND, SC_MINIMIZE, 0); >>> } >>> >>> That seems to work for us, YMMV. >>> >>> HTH, >>> Alen >>> >>> Oscar wrote: >>> >>>> Hi, >>> >>>> Does anyone know if there's something I have to do (or avoid doing) to >>>> make >>>> my game minimise when the player hits Alt+Tab whilst running in >>>> fullscreen >>>> with no other apps running? >>> >>>> My game isn't minimising in pre-Vista versions of Windows, but other >>>> games >>>> seem to do so. Windows isn't sending me any WM_ACTIVATE or >>>> WM_ACTIVATEAPP >>>> messages. I am getting WM_NCACTIVATE and WM_CANCELMODE, and I'm passing >>>> these on to the default WndProc expecting it to handle any necessary >>>> plumbing. >>> >>>> With other apps running the Alt+Tab behaviour is correct in fullscreen, >>>> but >>>> in this case Windows is sending me a completely different sequence of >>>> messages. >>> >>>> Thanks in advance, >>> >>>> Oscar Cooper >>>> Lead Programmer >>>> Frontier Developments Ltd >>> >>> >>> >>>> ------------------------------------------------------------------------- >>>> This SF.net email is sponsored by: Splunk Inc. >>>> Still grepping through log files to find problems? Stop. >>>> Now Search log events and configuration files using AJAX and a browser. >>>> Download your FREE copy of Splunk now >> http://get.splunk.com/ >>>> _______________________________________________ >>>> Gamedevlists-windows mailing list >>>> Gam...@li... >>>> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >>>> Archives: >>>> http://sourceforge.net/mailarchive/forum.php?forum_id=555 >>> >>> >>> >>> ------------------------------------------------------------------------- >>> This SF.net email is sponsored by: Splunk Inc. >>> Still grepping through log files to find problems? Stop. >>> Now Search log events and configuration files using AJAX and a browser. >>> Download your FREE copy of Splunk now >> http://get.splunk.com/ >>> _______________________________________________ >>> Gamedevlists-windows mailing list >>> Gam...@li... >>> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >>> Archives: >>> http://sourceforge.net/mailarchive/forum.php?forum_id=555 >>> >> >> >> >> ------------------------------------------------------------------------- >> This SF.net email is sponsored by: Splunk Inc. >> Still grepping through log files to find problems? Stop. >> Now Search log events and configuration files using AJAX and a browser. >> Download your FREE copy of Splunk now >> http://get.splunk.com/ >> _______________________________________________ >> Gamedevlists-windows mailing list >> Gam...@li... >> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >> Archives: >> http://sourceforge.net/mailarchive/forum.php?forum_id=555 >> > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=555 -- Alen |
From: Oscar C. <oc...@fr...> - 2007-09-06 14:27:00
|
Replying to my own post... I eventually got it working by recording the HWND passed with the WM_CANCELMODE message, then next time around my game loop calling ShowWindow( hWnd, SW_MINIMIZE ). This may not be the ideal solution to the problem so I'd still be interested in hearing if there's a better way. Thanks to all who helped, Oscar. ----- Original Message ----- From: "Oscar Cooper" <oc...@fr...> To: "Game Development for MS Windows" <gam...@li...> Sent: Thursday, September 06, 2007 12:54 PM Subject: Re: [GD-Windows] Alt+Tab in fullscreen with no other apps running >I still haven't got this working, testing under WinXP :-( > > Alen's idea gets me most of the way there, but my window gets restored > immediately after being minimised. Looking through the windows message > trace, it looks like the minimise completes successfully: the > WM_SYSCOMMAND > triggers a bunch of further messages including the WM_ACTIVATE > (WA_INACTIVE) > and WM_ACTIVATEAPP (wParam=FALSE). However I then immediately get a > WM_ACTIVATE (WA_ACTIVE) message, which I assume is generated by Windows in > response to certain properties of my window or because I'm not handling > some > messages correctly. > > In addition to Alen's code I've also tried experimenting with the window > style flags, and even tried calling SetWindowPos to force my window first > to > the bottom of the z-order and then again to put it back on top, to make > sure > it's not TOPMOST, but I'm still missing something. > > I hate working with API's I don't know very well, I feel like such a n00b > ;-> > > Can anyone bail me out? > > Cheers, > > Oscar. > > > > ----- Original Message ----- > From: "Alen Ladavac" <ale...@cr...> > To: <gam...@li...> > Sent: Tuesday, September 04, 2007 5:03 PM > Subject: Re: [GD-Windows] Alt+Tab in fullscreen with no other apps running > > >> Hi Oscar, >> >> IIRC, we've always been doing something like >> >> if( (msg.message==WM_ACTIVATE && (LOWORD(msg.wParam)==WA_INACTIVE || >> HIWORD(msg.wParam))) >> || msg.message==WM_CANCELMODE >> || msg.message==WM_KILLFOCUS >> || (msg.message==WM_ACTIVATEAPP && !msg.wParam)) { >> >> if (bInFullScreen) { >> PostMessage(NULL, WM_SYSCOMMAND, SC_MINIMIZE, 0); >> } >> >> That seems to work for us, YMMV. >> >> HTH, >> Alen >> >> Oscar wrote: >> >>> Hi, >> >>> Does anyone know if there's something I have to do (or avoid doing) to >>> make >>> my game minimise when the player hits Alt+Tab whilst running in >>> fullscreen >>> with no other apps running? >> >>> My game isn't minimising in pre-Vista versions of Windows, but other >>> games >>> seem to do so. Windows isn't sending me any WM_ACTIVATE or >>> WM_ACTIVATEAPP >>> messages. I am getting WM_NCACTIVATE and WM_CANCELMODE, and I'm passing >>> these on to the default WndProc expecting it to handle any necessary >>> plumbing. >> >>> With other apps running the Alt+Tab behaviour is correct in fullscreen, >>> but >>> in this case Windows is sending me a completely different sequence of >>> messages. >> >>> Thanks in advance, >> >>> Oscar Cooper >>> Lead Programmer >>> Frontier Developments Ltd >> >> >> >>> ------------------------------------------------------------------------- >>> This SF.net email is sponsored by: Splunk Inc. >>> Still grepping through log files to find problems? Stop. >>> Now Search log events and configuration files using AJAX and a browser. >>> Download your FREE copy of Splunk now >> http://get.splunk.com/ >>> _______________________________________________ >>> Gamedevlists-windows mailing list >>> Gam...@li... >>> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >>> Archives: >>> http://sourceforge.net/mailarchive/forum.php?forum_id=555 >> >> >> >> ------------------------------------------------------------------------- >> This SF.net email is sponsored by: Splunk Inc. >> Still grepping through log files to find problems? Stop. >> Now Search log events and configuration files using AJAX and a browser. >> Download your FREE copy of Splunk now >> http://get.splunk.com/ >> _______________________________________________ >> Gamedevlists-windows mailing list >> Gam...@li... >> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >> Archives: >> http://sourceforge.net/mailarchive/forum.php?forum_id=555 >> > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=555 > |
From: Dr A. P. <aj...@eu...> - 2007-09-06 13:45:27
|
If we make a directx9.0c game - how can we enable it to run on Vista without actually shipping the d3d9 dll? Cheers, Andrew This e-mail is confidential and may be privileged. It may be read, copied and used only by the intended recipient. No communication sent by e-mail to or from Eutechnyx is intended to give rise to contractual or other legal liability, apart from liability which cannot be excluded under English law. This email has been scanned for all known viruses by the Email Protection Agency. www.eutechnyx.com Eutechnyx Limited. Registered in England No: 2172322 |
From: Oscar C. <oc...@fr...> - 2007-09-06 11:54:20
|
I still haven't got this working, testing under WinXP :-( Alen's idea gets me most of the way there, but my window gets restored immediately after being minimised. Looking through the windows message trace, it looks like the minimise completes successfully: the WM_SYSCOMMAND triggers a bunch of further messages including the WM_ACTIVATE (WA_INACTIVE) and WM_ACTIVATEAPP (wParam=FALSE). However I then immediately get a WM_ACTIVATE (WA_ACTIVE) message, which I assume is generated by Windows in response to certain properties of my window or because I'm not handling some messages correctly. In addition to Alen's code I've also tried experimenting with the window style flags, and even tried calling SetWindowPos to force my window first to the bottom of the z-order and then again to put it back on top, to make sure it's not TOPMOST, but I'm still missing something. I hate working with API's I don't know very well, I feel like such a n00b ;-> Can anyone bail me out? Cheers, Oscar. ----- Original Message ----- From: "Alen Ladavac" <ale...@cr...> To: <gam...@li...> Sent: Tuesday, September 04, 2007 5:03 PM Subject: Re: [GD-Windows] Alt+Tab in fullscreen with no other apps running > Hi Oscar, > > IIRC, we've always been doing something like > > if( (msg.message==WM_ACTIVATE && (LOWORD(msg.wParam)==WA_INACTIVE || > HIWORD(msg.wParam))) > || msg.message==WM_CANCELMODE > || msg.message==WM_KILLFOCUS > || (msg.message==WM_ACTIVATEAPP && !msg.wParam)) { > > if (bInFullScreen) { > PostMessage(NULL, WM_SYSCOMMAND, SC_MINIMIZE, 0); > } > > That seems to work for us, YMMV. > > HTH, > Alen > > Oscar wrote: > >> Hi, > >> Does anyone know if there's something I have to do (or avoid doing) to >> make >> my game minimise when the player hits Alt+Tab whilst running in >> fullscreen >> with no other apps running? > >> My game isn't minimising in pre-Vista versions of Windows, but other >> games >> seem to do so. Windows isn't sending me any WM_ACTIVATE or WM_ACTIVATEAPP >> messages. I am getting WM_NCACTIVATE and WM_CANCELMODE, and I'm passing >> these on to the default WndProc expecting it to handle any necessary >> plumbing. > >> With other apps running the Alt+Tab behaviour is correct in fullscreen, >> but >> in this case Windows is sending me a completely different sequence of >> messages. > >> Thanks in advance, > >> Oscar Cooper >> Lead Programmer >> Frontier Developments Ltd > > > >> ------------------------------------------------------------------------- >> This SF.net email is sponsored by: Splunk Inc. >> Still grepping through log files to find problems? Stop. >> Now Search log events and configuration files using AJAX and a browser. >> Download your FREE copy of Splunk now >> http://get.splunk.com/ >> _______________________________________________ >> Gamedevlists-windows mailing list >> Gam...@li... >> https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows >> Archives: >> http://sourceforge.net/mailarchive/forum.php?forum_id=555 > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=555 > |
From: George G. <ge...@ba...> - 2007-09-04 19:00:18
|
There are also a number of other elements that could affect your game's alt-tab response: - Window Style and Window StyleEx flags (during create/adjust window) - SetWindowPos parameters - Use of SetForegroundWindow() and LockSetForegroundWindow() calls Also, alt-tab settings can differ not only in different OSes (2000 vs XP vs Vista) but also different service packs (especially of XP). And there's also some registry OS tweaks that change response and how 'sticky' the topmost window is. Microsoft seems to perpetually adjust this as new apps find new ways to 'steal' focus and need to be dealt with. (Interestingly, some of the most notorious 'stealing' apps are made by Microsoft themselves, such as their outlook and MSN 'notifications' etc). The moral of the story is to test on as many different systems as possible, including multi-mon combinations as well. -- George. - Lead Programmer, BattleGoat Studios - www.battlegoat.com -----Original Message----- From: gam...@li... [mailto:gam...@li...] On Behalf Of Oscar Cooper Sent: Tuesday, September 04, 2007 11:05 AM To: gam...@li... Subject: [GD-Windows] Alt+Tab in fullscreen with no other apps running Hi, Does anyone know if there's something I have to do (or avoid doing) to make my game minimise when the player hits Alt+Tab whilst running in fullscreen with no other apps running? My game isn't minimising in pre-Vista versions of Windows, but other games seem to do so. Windows isn't sending me any WM_ACTIVATE or WM_ACTIVATEAPP messages. I am getting WM_NCACTIVATE and WM_CANCELMODE, and I'm passing these on to the default WndProc expecting it to handle any necessary plumbing. With other apps running the Alt+Tab behaviour is correct in fullscreen, but in this case Windows is sending me a completely different sequence of messages. Thanks in advance, Oscar Cooper Lead Programmer Frontier Developments Ltd |
From: Alen L. <ale...@cr...> - 2007-09-04 16:03:14
|
Hi Oscar, IIRC, we've always been doing something like if( (msg.message==WM_ACTIVATE && (LOWORD(msg.wParam)==WA_INACTIVE || HIWORD(msg.wParam))) || msg.message==WM_CANCELMODE || msg.message==WM_KILLFOCUS || (msg.message==WM_ACTIVATEAPP && !msg.wParam)) { if (bInFullScreen) { PostMessage(NULL, WM_SYSCOMMAND, SC_MINIMIZE, 0); } That seems to work for us, YMMV. HTH, Alen Oscar wrote: > Hi, > Does anyone know if there's something I have to do (or avoid doing) to make > my game minimise when the player hits Alt+Tab whilst running in fullscreen > with no other apps running? > My game isn't minimising in pre-Vista versions of Windows, but other games > seem to do so. Windows isn't sending me any WM_ACTIVATE or WM_ACTIVATEAPP > messages. I am getting WM_NCACTIVATE and WM_CANCELMODE, and I'm passing > these on to the default WndProc expecting it to handle any necessary > plumbing. > With other apps running the Alt+Tab behaviour is correct in fullscreen, but > in this case Windows is sending me a completely different sequence of > messages. > Thanks in advance, > Oscar Cooper > Lead Programmer > Frontier Developments Ltd > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=555 |
From: Oscar C. <oc...@fr...> - 2007-09-04 15:05:34
|
Hi, Does anyone know if there's something I have to do (or avoid doing) to make my game minimise when the player hits Alt+Tab whilst running in fullscreen with no other apps running? My game isn't minimising in pre-Vista versions of Windows, but other games seem to do so. Windows isn't sending me any WM_ACTIVATE or WM_ACTIVATEAPP messages. I am getting WM_NCACTIVATE and WM_CANCELMODE, and I'm passing these on to the default WndProc expecting it to handle any necessary plumbing. With other apps running the Alt+Tab behaviour is correct in fullscreen, but in this case Windows is sending me a completely different sequence of messages. Thanks in advance, Oscar Cooper Lead Programmer Frontier Developments Ltd |
From: Andrew G. <ag...@se...> - 2007-08-28 16:47:33
|
Since Create*Shader relies on the inner workings of drivers I think the only way to reliably load that many of shaders without noticeable hitching is by doing it as a background task over a period of time. So long as your frontend doesn't require 10'000 shaders of course :) Andrew -----Original Message----- From: gam...@li... [mailto:gam...@li...] On Behalf Of Glen Miner Sent: Monday, August 27, 2007 1:02 PM To: Gam...@li... Subject: [GD-Windows] Reducing Shader Load Time We're using native C++ & DirectX 9 and I'm looking for a way to reduce our the shader load times. We have a relatively large number of shader permutations in our engine and we probably load upwards of 10,000 small permutations to the card at startup. IO is not a problem -- it's only a 2 or 4 MB and the data is streamed in asynchronously -- the real hitch seems to be D3D. The hitch is surprisingly bad on my modern workstation with a Radeon X1800 -- it can take upwards of 18 seconds spread over a few frames to shunt that mess up to the card. In comparison, on one of the consoles we're targetting we can push the same shaders to the card in less than 1ms (the other has UMA, so shaders are registered in place instantly). I'm running very recent Radeon drivers, most recent DirectX SDK developer runtime but using retail D3D9, no validation or anything. I'm reasonably confident our artists who aren't using the developer runtime also experience this problem. 18 seconds. The stall seems to happen in CreatePixelShader & CreateVertexShader -- does anyone know any tricks to lube up the driver so it'll accept a that much love all at once? peace ------------------------------------------------------------------------ - This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Gamedevlists-windows mailing list Gam...@li... https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows Archives: http://sourceforge.net/mailarchive/forum.php?forum_id=3D555 |
From: Glen M. <gle...@di...> - 2007-08-27 20:10:13
|
We're using native C++ & DirectX 9 and I'm looking for a way to reduce our the shader load times. We have a relatively large number of shader permutations in our engine and we probably load upwards of 10,000 small permutations to the card at startup. IO is not a problem -- it's only a 2 or 4 MB and the data is streamed in asynchronously -- the real hitch seems to be D3D. The hitch is surprisingly bad on my modern workstation with a Radeon X1800 -- it can take upwards of 18 seconds spread over a few frames to shunt that mess up to the card. In comparison, on one of the consoles we're targetting we can push the same shaders to the card in less than 1ms (the other has UMA, so shaders are registered in place instantly). I'm running very recent Radeon drivers, most recent DirectX SDK developer runtime but using retail D3D9, no validation or anything. I'm reasonably confident our artists who aren't using the developer runtime also experience this problem. 18 seconds. The stall seems to happen in CreatePixelShader & CreateVertexShader -- does anyone know any tricks to lube up the driver so it'll accept a that much love all at once? peace |
From: Jon W. <hp...@mi...> - 2007-08-06 20:25:13
|
I'm using VC 2005 SP1. Yeah, I know, not trusting a beta version of a crucial tool. Silly me! Anyway, I have a bunch of templates in a bunch of static libraries. However, suddenly, this one template is giving "multiple definitions" link warnings in one library, and then "duplicate definitions" when linking against more than one library that both use the same template. It's almost as if the linker doesn't recognize the template as a template, and treats it as a regular function or something. I'm starting with the code for the template (which is used in multiple static libraries), and then following on with the errors, because the template names are really quite ludicrous... template<typename T> class IIterator { public: virtual bool More() = 0; virtual T Next() = 0; virtual void Dispose() = 0; }; template<typename Iter> inline IIterator<typename Iter::value_type::first_type> * NewMapKeyIterator( Iter const &cur, Iter const &end) { class Ret : public IIterator<typename Iter::value_type::first_type> { public: Iter cur_, end_; bool More() { return cur_ != end_; } typename Iter::value_type::first_type Next() { assert(More()); return (*cur_++).first; } void Dispose() { delete this; } }; Ret *r = new Ret(); r->cur_ = cur; r->end_ = end; return r; } std::map<std::pair<std::string, std::string>, Whatever *> linkMap_; IIterator<std::pair<std::string, std::string> const> *Links() { return NewMapKeyIterator(linkMap_.begin(), linkMap_.end()); } The latter code is repeated in several files (hence the multiple template instantiations). Note that it's complaining about the inner class. What to do? (other than moving the inner class to an outer -- I'd like to stay in inner scope if possible) Is anyone brave enough for Orcas B2? / h+ PS: I think it would be awesome if the compiler could omit default template arguments in the demangling of template names. At least as an option. It might make the errors marginally readable. 1>------ Build started: Project: Components, Configuration: Debug Win32 ------ 1>Creating library... 1>ComponentRendermesh.obj : warning LNK4006: "public: virtual bool __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::More(void)" (?More@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@U?$ pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@ std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pair@V ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@P AVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@V?$ basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@@A BViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$pair @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@ @@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@D@s td@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@@@s td@@0@Z@UAE_NXZ) already defined in ComponentScatterMesh.obj; second definition ignored 1>ComponentRendermesh.obj : warning LNK4006: "public: virtual struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::Next(void)" (?Next@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@U?$ pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@ std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pair@V ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@P AVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@V?$ basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@@A BViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$pair @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@ @@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@D@s td@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@@@s td@@0@Z@UAE?BU?$pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator @D@2@@std@@V12@@5@XZ) already defined in ComponentScatterMesh.obj; second definition ignored 1>ComponentRendermesh.obj : warning LNK4006: "public: virtual void __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::Dispose(void)" (?Dispose@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@ U?$pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V1 2@@std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@ std@@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pai r@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std @@PAVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@ V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@ @@ABViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_t raits@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$p air@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@s td@@@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@ D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@ @@std@@0@Z@UAEXXZ) already defined in ComponentScatterMesh.obj; second definition ignored 1>Build log was saved at "file://c:\code\ogre14\Components\Debug\BuildLog.htm" 1>Components - 0 error(s), 3 warning(s) 2>------ Build started: Project: TheProject, Configuration: Debug Win32 ------ 2>Linking... 2>components.lib(ComponentScatterMesh.obj) : error LNK2005: "public: virtual bool __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::More(void)" (?More@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@U?$ pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@ std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pair@V ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@P AVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@V?$ basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@@A BViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$pair @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@ @@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@D@s td@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@@@s td@@0@Z@UAE_NXZ) already defined in components.lib(ComponentRendermesh.obj) 2>components.lib(ComponentScatterMesh.obj) : error LNK2005: "public: virtual struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::Next(void)" (?Next@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@U?$ pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@ std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@std @@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pair@V ?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@P AVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@V?$ basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@@A BViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$pair @V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@ @@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@D@s td@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@@@s td@@0@Z@UAE?BU?$pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator @D@2@@std@@V12@@5@XZ) already defined in components.lib(ComponentRendermesh.obj) 2>components.lib(ComponentScatterMesh.obj) : error LNK2005: "public: virtual void __thiscall `class IIterator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const > * __cdecl NewMapKeyIterator<class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator>(class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &,class std::_Tree<class std::_Tmap_traits<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class ILinkBase *,struct std::less<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<struct std::pair<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const ,class ILinkBase *> >,0> >::iterator const &)'::`2'::Ret::Dispose(void)" (?Dispose@Ret@?1???$NewMapKeyIterator@Viterator@?$_Tree@V?$_Tmap_traits@ U?$pair@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V1 2@@std@@PAVILinkBase@@U?$less@U?$pair@V?$basic_string@DU?$char_traits@D@ std@@V?$allocator@D@2@@std@@V12@@std@@@2@V?$allocator@U?$pair@$$CBU?$pai r@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std @@PAVILinkBase@@@std@@@2@$0A@@std@@@std@@@@YAPAV?$IIterator@$$CBU?$pair@ V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@ @@ABViterator@?$_Tree@V?$_Tmap_traits@U?$pair@V?$basic_string@DU?$char_t raits@D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@U?$less@U?$p air@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@s td@@@2@V?$allocator@U?$pair@$$CBU?$pair@V?$basic_string@DU?$char_traits@ D@std@@V?$allocator@D@2@@std@@V12@@std@@PAVILinkBase@@@std@@@2@$0A@@std@ @@std@@0@Z@UAEXXZ) already defined in components.lib(ComponentRendermesh.obj) 2> Creating library ..\bin\Debug/TheProject.lib and object ..\bin\Debug/TheProject.exp 2>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library 2>..\bin\Debug/TheProject.exe : fatal error LNK1169: one or more multiply defined symbols found -- -- Revenge is the most pointless and damaging of human desires. |
From: Alen L. <ale...@cr...> - 2007-07-17 06:57:39
|
Alen wrote: > So far I seem to have tracked this to the fact that cl.exe from > VS2005SP1 actually requires an older version of the msvcrt80.dll and > its manifest and it refuses to work with the ones distributed with > VS2005 SP1. Weirdly enough I don't find these installed in System, > WinSxS or VS2005 folders on my developer machine, but I have them in > the X360 and VS2003 folders. Strange as hell, but it might work. Just for the (google) record, seems that this has solved the problem. Examining the cl.exe from VS2005 SP1 with resource editor shows that its manifest requires msvcrt80 version 8.0.50608.0. A simple search for *VC80*.manifest files containing the string "8.0.50608.0", on the entire disk of a machine which works, has found a matching version of the manifest along with its dlls. Just copying those dlls and the manifest to the directory where cl.exe resides, makes it work. This makes sense, according to http://msdn2.microsoft.com/EN-US/library/aa375190.aspx, as it makes cl.exe a "(partially) isolated application". What is amazing is that (according to Dependency Walker) cl.exe on my machine happily uses version 8.0.50727.762. I guess it has something to do with it being registered, probably allowing it to jump in for the older version. Cheers, Alen |
From: Dan T. <da...@ar...> - 2007-07-16 20:20:22
|
All the new Dlls have to be registered with the sxs stuff nowadays... since it appears to just be looking for the vc8 runtime, you can run the redist, maybe that'll get you what you need? Sorry if this has alreayd been covered... it looks like I'm only getting part of this thread (only Alen's messages). Alen Ladavac wrote: > Aaron wrote: > >> Out of interest is the OS XP or Vista? >> > > XP. Is there a difference of interest in this case? (Perhaps I could > use the SxS tracker or whatsitsname on Vista?) > > Alen > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=555 > > > |
From: Alen L. <ale...@cr...> - 2007-07-16 15:04:27
|
Aaron wrote: > Out of interest is the OS XP or Vista? XP. Is there a difference of interest in this case? (Perhaps I could use the SxS tracker or whatsitsname on Vista?) Alen |
From: Alen L. <ale...@cr...> - 2007-07-16 14:13:39
|
Hi Aaron, Thanks for the tips! Installing anything (other than the OS and the Perforce client) is what I'm trying to avoid, in order to simplify the process of adding new build machines. :) So far I seem to have tracked this to the fact that cl.exe from VS2005SP1 actually requires an older version of the msvcrt80.dll and its manifest and it refuses to work with the ones distributed with VS2005 SP1. Weirdly enough I don't find these installed in System, WinSxS or VS2005 folders on my developer machine, but I have them in the X360 and VS2003 folders. Strange as hell, but it might work. Alen Aaron wrote: > I think msvcr80.dll is the important one. > You can check it in with the exe, or I think you can just install the > .NET Framework on the build machines instead (1.0, 1.1 or 2.0? I forget > exactly, but I think it's 2.0). > There's a lot of "think"s in the above, but it was a long time ago that > I got this working > Aaron. > |
From: Alen L. <ale...@cr...> - 2007-07-16 13:14:46
|
Hi, When installing build machines, we prefer not to actually install the IDEs there, but we instead put the required compiler binaries, libs and includes in the source control, and then just sync and build in one simple step. We were happily using this with VS2003, but with VS2005 (SP1 at least), this doesn't seem to work, due to some of that new fancy "manifest hell". When starting cl.exe from a such copied directory, I get plainly "The system cannot execute the specified program." Dependency walker says this: "Error: The Side-by-Side configuration information in "d:\work\main\tools.win32\vc8.0\bin\CL.EXE" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001)." I made sure I have all the needed dlls (c1, c2, cxx, msobj...) and the 3 mscrt80 dlls with their matching .manifest file, in the same dir with cl.exe. Has anyone succeeded in doing this? Any clue what might be a problem here? Thanks, Alen |
From: Alen L. <ale...@cr...> - 2007-07-16 13:04:46
|
Jon wrote: > After the PE executable data, if I create my own section/sections, could > I store more than 2 GB or 4 GB of data? Will the OS be unhappy because I > have such a large image? (I would assume not, given that the > self-extractors seem to work fine) There is no reason to use actual sections. Just "stick" the data to the end of the executable, using the copy command in the makefile or in a custom build rule. E.g.: copy /b MyGame.exe+MyData.dat Result.exe The PE loader uses the executable header anyway, so it will ignore the "junk" at the end of the file. It is most convenient if MyData.dat is actually a zip file. Zips already have the tail which says how long the data is and all the Sfx archives actually work like this. > If this is feasible, why does nobody do this? We do this for all our recent downloadable installers (demos, patches etc.). We unpack directly from the exe into the final install directory, using our custom installer. As for why MSI or IS don't have this as an option, I can't believe this kind of sloppiness as well. I think some other installers do handle this correctly though. This kind of installers lessens this space problem from 3x to 2x. But if you want absolutely no copying, there are various practical reasons, though, why one maybe doesn't want to run directly from there. E.g. the user might have downloaded this to a temporary directory which will be deleted, you can't apply patches if you haven't installed, etc, etc. JM2C, Alen |
From: Dan T. <da...@ar...> - 2007-07-13 16:19:03
|
There's already a system for putting resources into EXEs and DLLs, and you can access them easily from code. As long as you don't mind your resources paging in ala a memory mapped file, its good to go. The data as I recall is also read-only (not sure?), so if you do any pointer patching or whatnot, that might not work. Of course if you are just going to unpack to another section of memory, that's moot. -Dan Jon Watte wrote: > When downloading a program from the interwebs, I typically get a > self-extracting EXE. It creates a number of CAB files and a setup.exe on > my hard disk. It, in turn, will extract the cabs or msis into the > install location. This means that I need three times the storage space > on my hard disk, which for a laptop and modern 4G+ games sometimes is a > problem (and will be more so once flash drives become commonplace!) > > Is there any real reason why you can't bundle all your game assets into > the .EXE file in the first place? Thus, when downloading, you don't even > necessarily need an installer (although the Windows model of an > installer right now pretty much requires at least 2x the storage space). > After the PE executable data, if I create my own section/sections, could > I store more than 2 GB or 4 GB of data? Will the OS be unhappy because I > have such a large image? (I would assume not, given that the > self-extractors seem to work fine) > > If this is feasible, why does nobody do this? > > Cheers, > > / h+ > > |
From: Jon W. <hp...@mi...> - 2007-07-13 07:43:20
|
When downloading a program from the interwebs, I typically get a self-extracting EXE. It creates a number of CAB files and a setup.exe on my hard disk. It, in turn, will extract the cabs or msis into the install location. This means that I need three times the storage space on my hard disk, which for a laptop and modern 4G+ games sometimes is a problem (and will be more so once flash drives become commonplace!) Is there any real reason why you can't bundle all your game assets into the .EXE file in the first place? Thus, when downloading, you don't even necessarily need an installer (although the Windows model of an installer right now pretty much requires at least 2x the storage space). After the PE executable data, if I create my own section/sections, could I store more than 2 GB or 4 GB of data? Will the OS be unhappy because I have such a large image? (I would assume not, given that the self-extractors seem to work fine) If this is feasible, why does nobody do this? Cheers, / h+ -- -- Revenge is the most pointless and damaging of human desires. |
From: Pierre T. <pte...@ag...> - 2007-07-06 16:06:11
|
> > Be sure to post what was causing your problems if you figure it out, > > it could help someone out in the future.. you never know > > Yep, will do. I'll try to check this out this week-end. Apparently it's because of a SetFocus() call while processing the WM_ACTIVATE message. I added this like 3 years ago to solve some problem. It comes with this comment: // Make sure that last activated window gets the focus. This fixes the missing mouse wheel events // in render window. It also makes sure selecting another control removes the focus from render window. window->SetFocus(); Hmmm. In any case removing this line fixing the treeview issue. I'll have to revisit this one a bit.... - Pierre |
From: Pierre T. <pte...@ag...> - 2007-07-06 14:23:54
|
> Be sure to post what was causing your problems if you figure it out, > it could help someone out in the future.. you never know Yep, will do. I'll try to check this out this week-end. Meanwhile I have another issue with a group box not being repainted correctly... sounds familiar? I found this problem mentioned in the MSDN but the provided solution is less than satisfying, as it produces a really nasty flickering instead. I'm not sure if there is a known standard solution to this? The bug is demonstrated in the code below (creating a group box around a treeview - whose label edition does work :)). The bug is simply that the group box is not repainted correctly when you move another window in front of it. The bug disappears when the parent window is not created with WS_CLIPCHILDREN, but not using this flag is not really an option..... - Pierre #include <windows.h> #include <commctrl.h> #define null 0 static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { case WM_SYSKEYUP: case WM_SYSKEYDOWN: return 0; case WM_NOTIFY: { const NMHDR* nmhdr = (NMHDR*)lParam; if(nmhdr->code == TVN_BEGINLABELEDIT) { LPNMTVDISPINFO ptvdi = (LPNMTVDISPINFO)lParam; return 0; } if(nmhdr->code == TVN_ENDLABELEDIT) { LPNMTVDISPINFO ptvdi = (LPNMTVDISPINFO)lParam; return TRUE; } } break; case WM_CLOSE: case WM_DESTROY: ::PostQuitMessage(0); return 0; } return ::DefWindowProc(hwnd, uMessage, wParam, lParam); } static void* AddItem(HWND hwnd, void* parent, const char* item) { TV_ITEM tvItem; tvItem.mask = TVIF_TEXT; tvItem.pszText = (LPSTR)item; tvItem.cchTextMax = 256; HTREEITEM hParent; if(!parent) hParent = TVI_ROOT; else hParent = (HTREEITEM)parent; TV_INSERTSTRUCT tvInsert; tvInsert.hParent = hParent; tvInsert.hInsertAfter = TVI_LAST; tvInsert.item = tvItem; return TreeView_InsertItem(hwnd, &tvInsert); } static void CreateGroupBox(int x, int y, int w, int h, HWND parent) { HWND handle = ::CreateWindowEx( 0, "BUTTON", "Group box", WS_VISIBLE | WS_CHILD | BS_GROUPBOX, x, y, w, h, parent, (HMENU)null, (HINSTANCE)GetModuleHandle(null), null ); ::SendMessage(handle, WM_SETFONT, (WPARAM) (HFONT) ::GetStockObject(ANSI_VAR_FONT), MAKELPARAM (TRUE, 0)); } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX WndClass; WndClass.cbSize = sizeof(WNDCLASSEX); WndClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS; WndClass.lpfnWndProc = WndProc; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = (HINSTANCE)GetModuleHandle(null); WndClass.hIcon = null; WndClass.hCursor = ::LoadCursor(null, IDC_ARROW); WndClass.hbrBackground = (HBRUSH)COLOR_WINDOW; WndClass.lpszMenuName = null; WndClass.lpszClassName = "IceGUIClass"; WndClass.hIconSm = null; if(!::RegisterClassEx(&WndClass)) return false; ::InitCommonControls(); ////////// DWORD Style = WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN; HWND handle = ::CreateWindowEx( 0, "IceGUIClass", "Label", Style, 10, 10, 640, 480, null, (HMENU)null, (HINSTANCE)GetModuleHandle(null), null ); ::ShowWindow(handle, SW_SHOW); ////////// DWORD TVStyle = TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS | WS_VISIBLE | WS_CHILD; TVStyle |= TVS_EDITLABELS; HWND TVHandle = ::CreateWindowEx( WS_EX_CLIENTEDGE, WC_TREEVIEW, "", TVStyle, 30, 30, 100, 100, handle, (HMENU)0, (HINSTANCE)GetModuleHandle(null), null ); ::SendMessage(TVHandle, WM_SETFONT, (WPARAM) (HFONT) ::GetStockObject (ANSI_VAR_FONT), MAKELPARAM (TRUE, 0)); ::ShowWindow(TVHandle, SW_SHOW); AddItem(TVHandle, null, "Item1"); AddItem(TVHandle, null, "Item2"); AddItem(TVHandle, null, "Item3"); //////////////////////// CreateGroupBox(10, 10, 140, 140, handle); //////////////////////// MSG msg; while (1) { if(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { if(!::GetMessage (&msg, NULL, 0, 0)) { break; } ::TranslateMessage (&msg); ::DispatchMessage (&msg); } } return 0; } |
From: Sander v. R. <san...@gm...> - 2007-07-06 13:18:31
|
Ok, good luck.. Be sure to post what was causing your problems if you figure it out, it could help someone out in the future.. you never know On 7/6/07, Pierre Terdiman <pte...@ag...> wrote: > > So i guess you still haven't gotten it to work :( > > Have you tried it on another pc? > > I suppose editing labels in a treeview works in other applications on your > pc? > > Have you looked for label-editing source code on the web and tried to run > it? > > I created a small repro case with the bare minimum, and of course it does > work in the repro case.......... > > I guess there is something wrong in my wndproc, preventing the edit-box from > opening. Oh well, now at least I have it working somewhere, and I can > investigate more. I'll handle it from here :) > > Thanks, > - Pierre > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=555 > |
From: Pierre T. <pte...@ag...> - 2007-07-06 13:13:21
|
> So i guess you still haven't gotten it to work :( > Have you tried it on another pc? > I suppose editing labels in a treeview works in other applications on your pc? > Have you looked for label-editing source code on the web and tried to run it? I created a small repro case with the bare minimum, and of course it does work in the repro case.......... I guess there is something wrong in my wndproc, preventing the edit-box from opening. Oh well, now at least I have it working somewhere, and I can investigate more. I'll handle it from here :) Thanks, - Pierre |
From: Sander v. R. <san...@gm...> - 2007-07-06 10:48:28
|
So i guess you still haven't gotten it to work :( Have you tried it on another pc? I suppose editing labels in a treeview works in other applications on your pc? Have you looked for label-editing source code on the web and tried to run it? On 7/6/07, Pierre Terdiman <pte...@ag...> wrote: > > What do you return from TVN_BEGINLABELEDIT? > > FALSE, but I tried TRUE just in case and it didn't help. > > > Is your TreeView part of a dialog form, or created dynamically on another > > Window? > > Created dynamically. > > - Pierre > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Gamedevlists-windows mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-windows > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=555 > |
From: Pierre T. <pte...@ag...> - 2007-07-06 09:30:50
|
> What do you return from TVN_BEGINLABELEDIT? FALSE, but I tried TRUE just in case and it didn't help. > Is your TreeView part of a dialog form, or created dynamically on another > Window? Created dynamically. - Pierre |