What operating system? What compiler? I would't do that -- it would take years to duplicate what other teams of programmers have already done, especially if you want cross platform. QT is probably one of the best free cross-platform GUI compilers, actually I think it's just an IDE and works with other compilers such as GCC, MinGW, and CL (M$ compiler).
But if you really insist on doing your own thing them be my guest. For MS-Windows you need to lear win32 api GUI -- it's all C language, not C++ but can be called from C++ as well. Here is a tutorial to get you started.
*nix isn't so easy as win32 api, if you want to start at the bottom you will have to learn X11R6. There are dozens of manuals that you can buy from amazon.com.
I highly recommend Qt. It's a library with a few additional tools. There is also a plug-in for Visual Studio, or you can use its native IDE (Qt Creator, which uses MinGW/GCC). There are plenty of tutorials online to show you how to do it step by step. It's pretty much as easy as it gets when it comes to GUI programming in C++.
I agree with AD and Mike2k about using Qt. It is a cross-platform C++ API that lets you really write once and deploy on multiple system types from Windoze, to Linux, to Unix (BSD et al), to some mobile operating systems, etc. Of course, once you use Windows API's in your code directly, that compatibility goes right out the window (so to speak)!