|
Hi everybody,
I have a console application, that create a dialog box to show a progress bar. This has worked fine for years (it started as a Visual Studio 6 project, then I migrated it to Studio 2005) Now, I have migrated it to Studio 2010. It still works fine under Windows 7, but under XP, the dialog box returns -1, with a GetLastError() of 0. When I look at the messages sent to the dialog box, then I see WM_SETFONT, followed by WM_DESTROY and WM_NCDESTROY. I call it as
DialogBox (hInstance, MAKEINTRESOURCE (IDD_MAPPER), HWND_DESKTOP, DialogProc), where DialogProc is defined as
INT_PTR CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM);
Like I said: it all worked fine and still does in Windows 7, but XP does not seem to co-operate anymore.
Anybody any ideas? Would be grately appreciated!
Thanks in advance,
William
|
|
|
|
|
Is you Windows XP updated to (at least) Service Pack 2 ?
(see here here[^])
Veni, vidi, vici.
|
|
|
|
|
It is most likely the manifest. When I converted my projects to VS2010, it changed all my manifests to use urn:schemas-microsoft-com:asm.v2 in this line:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0>
You need to change it back to v1.
Basically, manifest should look similar to:
="1.0"="UTF-8"="yes"
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="2.0.1.1"
processorArchitecture="X86"
name="myAwesomeApp"
type="win32"
/>
<description>Awesome</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Also, please check if you still using the manifest loaded via RT_MANIFEST resource. You need to delete this from resource and use the project settings. VS2010 has a habit of assigning RT_MANIFEST to 2, making the program unusable under XP.
And of cause you need to check this linker option: MinimumRequiredVersion. It should be 5.00.
|
|
|
|
|
Thanks for your answer, but I cannot find much out of the ordinary. I am not very well familiar with the manifest, but it looks to be generated by Studio2010? Anyway, it reads:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
There is no RT_MANIFEST mentioned in the resource
Also, the MinimumRequiredVersion is left blank, so I don't expect any difficulties there!
In any case: the program itself runs and it does everything up untill the point that I start the dialog box. (and everything after that dialogbox crashes) There are a number of log statements before and after and I see everyone of them. Only everything that occurs from within the dialogbox doe not appear in XP.
|
|
|
|
|
Try to set MinimumRequiredVersion to 5.00
|
|
|
|
|
Just tried that: No change
Thanks anyway
|
|
|
|
|
Is InitCommonControlsEx() of any help?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
YES! Thank you very much! I had commented that one out, since Studio 2005 at the time said it was no longer necessary! Including it again did the trick!
Thank you very much!
|
|
|
|