windows - Visual Studio upgrade from 2005 to 2015, C++ GUI keeps XP theme not system theme -
i migrated project vs2005 vs2015. in doing so, project refuses use system , feel , uses windows 98 , feel. when built in 2005 use system appearance.
the .rc file describes dialogs identical copied , pasted original 1 over. properties same.
i have searched around , 1 possibilty flatstyle property, can set system, none of dialogs have property.
furthermore, have looked through this , tried suggestions none seem work.
i believe issue setting have disable 2015 application adapts system , feel.
so how make application adapt current system?
here example of dialog:
style ds_setfont | ds_3dlook | ds_center | ws_minimizebox | ws_popup | ws_caption | ws_sysmenu | ws_thickframe exstyle ws_ex_acceptfiles | ws_ex_appwindow
to allow app use visual styles, need specify want use comctl32.dll version 6 or later, through manifest file. windows ships multiple versions of file, need specify want newer one.
note that, @mgetz mentioned in comments, newer dll requires unicode work properly, make sure character set set unicode in project's general properties.
you can generate file yourself, or let visual studio generate automatically according project dependencies , linker directives in source code.
so, easiest way let linker generate it. open linker properties project, select manifest page, , make sure generate manifest set yes. place following directive in source code:
// broken several lines readability, usual make sure there // no backspaces after trailing backslashes if copy/pasting #pragma comment(linker, "\"/manifestdependency:type='win32' \ name='microsoft.windows.common-controls' version='6.0.0.0' \ processorarchitecture='*' publickeytoken='6595b64144ccf1df' language='*'\"") alternatively, can generate manifest file manually. according enabling visual styles article, should (the <dependency> attribute relevant one):
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0"> <assemblyidentity version="1.0.0.0" processorarchitecture="*" name="companyname.productname.yourapplication" type="win32" /> <description>your application description here.</description> <dependency> <dependentassembly> <assemblyidentity type="win32" name="microsoft.windows.common-controls" version="6.0.0.0" processorarchitecture="*" publickeytoken="6595b64144ccf1df" language="*" /> </dependentassembly> </dependency> </assembly>
Comments
Post a Comment