As I am looking through the code, I noticed certain things, and have these suggestions:
All the methods that doesn't change any members should be made constant. Examples of this are the getSomeColor methods.
You should generally also make arguments const, unless you have a good reason for not doing so.
Why use this ID system for items? I would simply use their index directly and return an int instead of unsigned int in the getters. '-1' could then be used to indicate failure, which is quite common.
If you want to go the ID route you should implement a true unique ID system, completely decoupled from item index.
Instead of doing this:
/// The string will be empty when the id was too high or when it was 0.
sf::String getItem(unsigned int id);
You could also take a string reference, fill it, and return a bool to indicate success, like so:
bool getItem(const unsigned int id, sf::String &returnValue);
This is a common strategy when you want to return more than one piece of information.
In the constructor of Listbox you have:
m_ObjectType = listbox;
What is the purpose of this? It is never used in the class.
I hope you can use my critique.