I have sometimes problems to create windows applications which support XP themes. Somehow controls disappear if I select "Support Windows XP Themes" from the project options.
For example, if I compile the code below with XP themes, the control called "button" is not visible and I don't know why. Does anyone else know?
/ Make the class name into a global variable /
char szClassName[ ] = "WindowsApp";
HWND button;
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; / This is the handle for our window /
MSG messages; / Here messages to the application are saved /
WNDCLASSEX wincl; / Data structure for the windowclass /
/* The Window structure */
wincl.hInstance=hThisInstance;
wincl.lpszClassName=szClassName;
wincl.lpfnWndProc=WindowProcedure;/* This function is called by windows */
wincl.style=CS_DBLCLKS;/* Catch double-clicks */
wincl.cbSize=sizeof(WNDCLASSEX);/* Use default icon and mouse-pointer */
wincl.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wincl.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
wincl.hCursor=LoadCursor(NULL,IDC_ARROW);
wincl.lpszMenuName=NULL;/* No menu */
wincl.cbClsExtra=0;/* No extra bytes after the window class */
wincl.cbWndExtra=0;/* structure or the window instance *//* Use Windows's default color as the background of the window */
wincl.hbrBackground=(HBRUSH)COLOR_BACKGROUND;/* Register the window class, and if it fails quit the program */if(!RegisterClassEx(&wincl))return0;/* The class is registered, let's create the program*/
hwnd=CreateWindowEx(0,/* Extended possibilites for variation */szClassName,/* Classname */"WindowsApp",/* Title Text */WS_OVERLAPPEDWINDOW,/* default window */CW_USEDEFAULT,/* Windows decides the position */CW_USEDEFAULT,/* where the window ends up on the screen */544,/* The programs width */375,/* and height in pixels */HWND_DESKTOP,/* The window is a child-window to desktop */NULL,/* No menu */hThisInstance,/* Program Instance handler */NULL/* No Window Creation data */);
button=CreateWindowEx(WS_EX_TOPMOST,"BUTTON","OK",BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,65,65,127,95,hwnd,0,hThisInstance,0);/* Make the window visible on the screen */
ShowWindow(hwnd,nFunsterStil);/* Run the message loop. It will run until GetMessage() returns 0 */while(GetMessage(&messages,NULL,0,0)){/* Translate virtual-key messages into character messages */TranslateMessage(&messages);/* Send message to WindowProcedure */DispatchMessage(&messages);}/* The program return-value is 0 - The value that PostQuitMessage() gave */returnmessages.wParam;
}
/ This function is called by the Windows function DispatchMessage() /
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) / handle the messages /
{
case WM_DESTROY:
PostQuitMessage (0); / send a WM_QUIT to the message queue /
break;
default: / for messages that we don't deal with /
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi!
I have sometimes problems to create windows applications which support XP themes. Somehow controls disappear if I select "Support Windows XP Themes" from the project options.
For example, if I compile the code below with XP themes, the control called "button" is not visible and I don't know why. Does anyone else know?
include <windows.h>
using namespace std;
/ Declare Windows procedure /
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/ Make the class name into a global variable /
char szClassName[ ] = "WindowsApp";
HWND button;
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; / This is the handle for our window /
MSG messages; / Here messages to the application are saved /
WNDCLASSEX wincl; / Data structure for the windowclass /
}
/ This function is called by the Windows function DispatchMessage() /
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) / handle the messages /
{
case WM_DESTROY:
PostQuitMessage (0); / send a WM_QUIT to the message queue /
break;
default: / for messages that we don't deal with /
return DefWindowProc (hwnd, message, wParam, lParam);
}
}
You can try initializing common controls, see this post:
https://sourceforge.net/forum/message.php?msg_id=2486139
I remember someone having similar problems before, I don't recall if we ever got a solution, so let us know if this helps.