Best way to add XP style to your controls
Let's Start (without introduction) :)
Design your form and put your necessary controls in it (e.g. Form1)
Change "Startup Object" to Sub Main
Add a module and insert in it this code
VB Code:
Private Type tagInitCommonControlsEx
lngSize As Long
lngICC As Long
End Type
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" _
(iccex As tagInitCommonControlsEx) As Boolean
Private Const ICC_USEREX_CLASSES = &H200
Public Function InitCommonControlsVB() As Boolean
On Error Resume Next
Dim iccex As tagInitCommonControlsEx
' Ensure CC available:
With iccex
.lngSize = LenB(iccex)
.lngICC = ICC_USEREX_CLASSES
End With
InitCommonControlsEx iccex
InitCommonControlsVB = (Err.Number = 0)
End Function
Public Sub Main()
InitCommonControlsVB
' Start your Application here ( e.g. Form1.Show )
Form1.Show
End Sub
Now Build EXE Program ( for example test.exe )
Open Notepad and type
HTML Code:
<?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="X86"
name="CompanyName.ProductName.YourAppName"
type="win32" />
<description>Your application description here</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*" />
</dependentAssembly>
</dependency>
</assembly>
Save it in the directory you saved test.exe in it with name (test.exe.manifest)
Finally, execute your program (test.exe) you will see all comon controls with XP Styles... :)
Re: Best way to add XP style to your controls
Nice Code, but it should be in the codebank
Re: Best way to add XP style to your controls
Now if I was being cynical, I'd say you'd just lifted that from vbAccelerator :ehh:
There's also an example there of having the manifest file as a resource, so it'll get compiled into the exe and you don't need to distribute it.
It should be noted that this will provide XP styles to Microsoft Windows Common Controls 5.0 not 6.0, as comctl32.ocx (ocx for v5) is dependant on comctl32.dll whereas mscomctl.ocx (ocx for v6) is not.
Re: Best way to add XP style to your controls
I use this and i have a problem with the buttons. The last character of the caption get's put on a new line. Why is this and how can i fix it?
Re: Best way to add XP style to your controls
Warning!
Visual Basic 6.0 Does Not Support Windows XP Themes or Visual Styles
http://support.microsoft.com/?id=309366
Re: Best way to add XP style to your controls
Yes, but there have been workarounds for most of its limitations and bugs. Like using an option button in a frame will make it display as all black but if you place the option button in a picturebox inside the frame then it will draw correctly etc.
Not to mention that the code will not apply XP Themes UNLESS you are running Windows XP.
Re: Best way to add XP style to your controls
Tested it on XP...
and it works fine without having the code in the module and the sub-main, just the manifest...
Re: Best way to add XP style to your controls
Quote:
Originally Posted by vbaccelerator.com
Ensuring Your Application Links to ComCtl32.dll
If you provide a manifest, but your application does not link to ComCtl32.dll, then it will fail to load - sometimes with no error message!. You need to call at least InitCommonControls before any visual elements are displayed. Sometimes, you don't need to do anything because your application may already link to ComCtl32.dll (for example, if it includes any of the Windows Common Controls provided with Visual Basic), however, to be certain it works it is best to call InitCommonControls prior to displaying any forms.
:afrog: