Программирование звука в Windows (C++)

Программирование звука в Windows (C++) — Прочие исходники

Класс отладочной консоли (используется в некоторых моих Win32-проектах)

Во многих средах разработки есть отладочная консоль, куда можно вывести в виде текста любую необходимую информацию с помощью (например, можно проследить, чем инициализируется массив данных для изображения или звука). Мне нравится отладочная консоль в Xcode (среда разработки приложений для Mac OS или iPhone). В Visual Studio есть подобное окно "OUTPUT", куда можно выводить отладочную информацию с помощью TRACE-макросов. В одном Visual C++ проекте я использовал свою отладочную консоль (исходники смотрите ниже). В проекте, который я выполнял на Borland C++ Builder 5 (достаточно древняя среда разработки) я не смог найти никакого аналога отладочной консоли, поэтому мне пришлось использовать свой класс отладочной консоли.

DConsole.h

#ifndef DConsoleH
#define DConsoleH
#include <string>
#include <iomanip>
#include <sstream>

class DCons
{
public:
    DCons(bool isEnabled = true);
    ~DCons();
    void WriteLn(std::string message);
        void WriteLn(int value);
        void WriteLn(float value);
        void WriteLn(std::string message, int value);
        void WriteLn(std::string message, float value);
        void WriteError(std::string message);
        void WriteError(std::string message, int value);
        void WriteError(std::string message, float value);
private:
    HANDLE hConsoleOutput;
    DWORD NumberOfCharsWritten;
    LPVOID lpReserved;
    bool consoleIsEnabled;
};

#endif

DConsole.cpp

#include "DConsole.h"
DCons::DCons(bool isEnabled)
{
        consoleIsEnabled = isEnabled;
        if (!consoleIsEnabled) return;
    if (!AllocConsole())
    {
        MessageBox(NULL, "Failed to create the console!", "Debug console error", MB_OK|MB_ICONEXCLAMATION);
        hConsoleOutput = NULL;
    }
    else
    {
        hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    }
}
//-----------------------------------------------------------------------------
DCons::~DCons()
{
        if (!consoleIsEnabled) return;
    if (!FreeConsole())
        MessageBox(NULL, "Could not free the console!", "Debug console error!", MB_OK);
}
//-----------------------------------------------------------------------------
void DCons::WriteLn(std::string message)
{
        if (!consoleIsEnabled) return;
    message += "\n";
    if (hConsoleOutput)
        WriteConsole(hConsoleOutput,    // handle to a console screen buffer
            message.c_str(),    // pointer to buffer to write from
            message.size(),    // number of characters to write
            &NumberOfCharsWritten,    // pointer to number of characters written
            lpReserved);     // reserved
}
//-----------------------------------------------------------------------------
void DCons::WriteLn(int value)
{
        if (!consoleIsEnabled) return;
        std::ostringstream strStream;
        strStream << value;
        WriteLn(strStream.str());
}
//------------------------------------------------------------------------------
void DCons::WriteLn(float value)
{
        if (!consoleIsEnabled) return;
        std::ostringstream strStream;
        strStream << value;
        WriteLn(strStream.str());
}
//------------------------------------------------------------------------------
void DCons::WriteLn(std::string message, int value)
{
        if (!consoleIsEnabled) return;
        std::ostringstream strStream;
        strStream << message << value;
        WriteLn(strStream.str());
}
//------------------------------------------------------------------------------
void DCons::WriteLn(std::string message, float value)
{
        if (!consoleIsEnabled) return;
        std::ostringstream strStream;
        strStream << message << value;
        WriteLn(strStream.str());
}
//------------------------------------------------------------------------------
void DCons::WriteError(std::string message)
{
        WriteLn("------------- ERROR MESSAGE: --------------");
        WriteLn(message);
        WriteLn("-------------------------------------------");
}
//------------------------------------------------------------------------------
void DCons::WriteError(std::string message, int value)
{
        WriteLn("------------- ERROR MESSAGE: --------------");
        WriteLn(message, (int)value);
        WriteLn("-------------------------------------------");
}
//------------------------------------------------------------------------------
void DCons::WriteError(std::string message, float value)
{
        WriteLn("------------- ERROR MESSAGE: --------------");
        WriteLn(message, (float)value);
        WriteLn("-------------------------------------------");
}
//------------------------------------------------------------------------------

Программирование звука в Windows (C++)