foo_setyear: Looks like that one will have to be updated to SDK 0.8 (0.8.1 and 0.8.2 don't really differ from it in the aspects that are causing you compile problems). Things to do:
For 'menu_item_context::get_num_items', change the return type to 'unsigned'. There are likely other methods that the compiler complains about. The general rule is, that item indices are now declared as 'unsigned' instead of 'int', so you should change that. 'menu_item_context::get_num_items' now takes an additional parameter of type 'GUID &', which you have to add to the method signature. The changes are best described by an example:
// the old way
virtual int get_num_items() {return k+1;}
virtual const char * enum_item(int n) {
if (n == 0) return "Command 1";
if (n == 1) return "Command 2";
...
if (n == k) return "Command k+1";
return 0;
}
virtual void context_command(int n, const ptr_list_base<metadb_handle> & data) {
if (n == 0) {
// perform command 1
} else if (n == 1) {
// perform command 2
} ... else if (n == k) {
// perform command k+1
}
}
// the new way
virtual unsigned get_num_items() {return k+1;}
virtual void enum_item(unsigned n, string_base & out) {
static const char * strings[] = {
"Command 1", "Command 2", ..., "Command k+1"
}
if (n < get_num_items()) {
out = strings[n];
}
}
virtual void context_command(unsigned n, const ptr_list_base<metadb_handle> & data, const GUID & caller) {
if (n == 0) {
// perform command 1
} else if (n == 1) {
// perform command 2
} ... else if (n == k) {
// perform command k+1
}
}
Note: The example for 'context_command' (old way) is from memory, but I hope it is correct.
For foo_quicktag, you propably have to add dependencies to foobar2000_sdk, foobar2000_component_client, and possibly foobar2000_sdk_helpers. (You can find this setting in the main menu of Visual Studio under 'Prefernces/Dependencies...'.)
You can find mt19937int.cpp on kode54's site IIRC.