Technically C++ and XP/98 Linux OSX Unix are not an intregal part of one another. C++ is just merely a tool by which you can write applications for many platforms. The scope an purpose to your classes would have been gaining knowledge how to use the language effectively. Just because you are shown how to use a circular saw doesn't make you a carpenter, but you may be the best circular saw user on the planet.
If you are interested in designing GUI applicaitons for windows, now you must study a book such as WIN32 API Superbible. Once you understand all the functions that are part and parcel of the operating enviorment of interest, maybe even OSX, Linux, Unix, Gnome, KDE and so on, then you will be on your way marrying C++ with end user applications.
Learning an operating systems API can be as ownerous as learning C++. Here is an example of a skeletal windows app.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
HINSTANCE hInst;
HWND MainWnd;
const char *AppName = "OLIST", *AppTitle = "Order List Lookup";
static bool CreateMainWindow (int ShowValue);
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
// =========================================================================================
int APIENTRY WinMain (HINSTANCE Instance, HINSTANCE PrevInst, char *CmdLine, int ShowValue)
{
MSG Msg;
Msg.wParam = -1;
hInst = Instance; // Global copy of instance handle.
if (CreateMainWindow (ShowValue))
{
while (GetMessage (&Msg, NULL, 0, 0))
{
TranslateMessage (&Msg);
DispatchMessage (&Msg);
}
}
return Msg.wParam;
}
// -------------------------------------------------------------------------------------------
static bool CreateMainWindow (int ShowValue)
{
const UINT STYLE = WS_SYSMENU | WS_MINIMIZEBOX | WS_SIZEBOX;
const UINT EX_STYLE = WS_EX_CLIENTEDGE;
WNDCLASSEX Wc;
Wc.cbSize = sizeof WNDCLASSEX;
Wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
Wc.lpfnWndProc = WNDPROC (MainWndProc);
Wc.cbClsExtra = 0;
Wc.cbWndExtra = 0;
Wc.hInstance = hInst;
Wc.hIcon = 0;
Wc.hCursor = LoadCursor (NULL, IDC_ARROW);
Wc.hbrBackground = HBRUSH (COLOR_BTNFACE + 1);
Wc.lpszClassName = AppName;
Wc.lpszMenuName = NULL;
Wc.hIconSm = 0;
if (RegisterClassEx (&Wc))
{
SIZE Wnd;
// Determine windows size based on current resolution. 38% width 75% height.
Wnd.cx = GetSystemMetrics (SM_CXSCREEN) >> 1;
Wnd.cx -= Wnd.cx >> 2;
Wnd.cy = GetSystemMetrics (SM_CYSCREEN);
Wnd.cy -= Wnd.cy >> 2;
MainWnd = CreateWindowEx (EX_STYLE, AppName, AppTitle, STYLE,
CW_USEDEFAULT, CW_USEDEFAULT, Wnd.cx, Wnd.cy,
NULL, NULL, hInst, NULL);
if (MainWnd)
return true;
}
return false; // Default return value, function failed.
}
// -------------------------------------------------------------------------------------------
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
// ________________________________________________________________________________
case WM_CREATE:
ShowWindow (hWnd, SW_NORMAL);
break;
// ________________________________________________________________________________
case WM_DESTROY:
PostQuitMessage (0);
break;
// ________________________________________________________________________________
default:
return DefWindowProc (hWnd, Msg, wParam, lParam);
}
return 0; // Default value for applciation handled messages.
}
I apologize for the formatting. I'm still trying to figure out the best way to copy and paste code so it will look good in this code frame