Если WinAPI, то см. функции
DrawText, SetPixel, BeginPaint, EndPaint, GetDC
Пример использования (выводит текст и рисует синусоиду):
Код:
VOID APIENTRY HandlePaint(
    HWND hwnd
    )
{
    HDC         hdc;
    PAINTSTRUCT ps;
    RECT        rc;
    TCHAR       tszOut[] = TEXT("Tap in the window for a popup menu");
    
    hdc = BeginPaint(hwnd, (LPPAINTSTRUCT)&ps);
    
   for(int i=0;i<2400;i++)
   {
      SetPixel(hdc,i/10,100 +
         sin(float(i)/200)*50,
         RGB(255,0,0));
   }
    /* Center the text in the client area
    GetClientRect (hwnd, (LPRECT)&rc);
    DrawText (hdc,
        tszOut,
        _tcslen(tszOut),
        (LPRECT)&rc,
        DT_VCENTER | DT_CENTER | DT_SINGLELINE);
   */
    EndPaint(hwnd, (LPPAINTSTRUCT)&ps);
}
Для обработки нажатия клавиш и перерисовки надо писать функцию окна, принимающую и реагирующую на соответствующие сообщения системы.
Остальное - линии, круги и т.п. аналогично рисованию точки.
Если хотите, пишите в личку e-mail, пришлю хорошо комментированный файл, в котором создается окно, реализована функция окна, реакции на некоторые события, прорисовка, меню и т.п. Не бойтесь WinAPI, мне хватило часа, чтобы, на основании примера реализовать кое-что свое.