SendMessage function name problem

5 sierpnia 2007

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 ;)

Podobne notatki:

Może zainteresują Cię również następujące, pododbne notatki:

Nikt jeszcze nie skomentował tego wpisu.
Możesz być pierwszy.

Dodaj swój komentarz

Możesz użyć tych tagów XHTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Jeśli chcesz wstawić kilku linijkowy fragment kodu, użyj tagów <pre lang="x"></pre> (gdzie x język kodu np. cpp, perl, html). W ten sposób kod zostanie odpowiednio sformatowany i pokolorowany przez system.

Uwaga!

Na tym blogu działa system cache oraz filtr antyspamowy. Twój komentarz może być widoczny na stronie z pewnym opóźnieniem. Proszę o cierpliwość. Jeśli utraciłeś już wszystkie jej zasoby poinformuj mnie o tym, być może system uznał Cię za spamera ;)