SendMessage function name problem
W notce WinAPI i problemy z nazewnictwem przedstawiłem proste i łatwe rozwiązanie problemu z nazwa funkcji SendMessage().
Rozwiązanie to działające, aczkolwiek zawierające kilka wad. Wadami tymi jest wymóg spełnienia kilku warunków. Głównym z nich jest dołączenie nagłówka windows.h do projektu, przed dołączeniem nagłówków biblioteki, w której chcemy zadeklarować funkcje o nazwie SendMessage(), a w skrajnych przypadkach (chyba w każdym) nawet do pliku/projektu tej biblioteki.
Jeśli program będzie korzystał z WinAPI to nie będzie problemów. Gorzej, jeśli nie będzie, a będzie na platformę Windows. Wtedy dodatkowo i nie potrzebnie trzeba będzie includować windows.h, a co za tym idzie cały szereg winapowskich nagłówków.
Po zaprezentowaniu tamtego rozwiązania czułem jakiś wewnętrzny niedosyt, że to nie jest to, że nie jest idealne i uniwersalne.
Dziś przy napływie miliona myśli na sekundę, z niewidomych przyczyn, wróciłem do tego problemu i znalazłem lepsze, wręcz idealne (jeśli takie nie jest) rozwiązanie.
W głównym nagłówku projektu, bądź w nagłówku z deklaracjami naszej funkcji SendMessage dorzucamy poniższy fragment kodu:
// Fixed SendMessage function name problem on Win32 #if defined WIN32 && !defined SendMessage #ifdef UNICODE #define SendMessage SendMessageW #else #define SendMessage SendMessageA #endif #endif |
Rozwiązanie jeszcze łatwiejsze i prostsze niż poprzednie, i do tego uniwersalne, bez dołączania nie potrzebnych nagłówków ;)