[C言語]クリップボード

クリップボードの動き
——-
1.OpenClipboard()  // 開く
2.EmptyClipboard() // 現在の確保メモリを開放
3.GlobalAlloc()、GlobalLock() // 書き込むメモリを確保
4.上記メモリに書き込む
5.GlobalUnlock()   // メモリのロックを解除
6.SetClipboardData() // メモリをクリップボードにセット
7.CloseClipboard() // 閉じる

#include <stdio.h>
#include <string.h> // strlenに使用

int main(void){
	char str[256];
	int len;

	scanf("%s", str);
	len = strlen(str);

	printf("入力した文字列は:%s\n文字数:%d\n", str, len);

	thandl = GlobalAlloc(str, len+1);

	OpenClipboard(NULL);
	EmptyClipboard();

	SetClipboardData(str, thandl);
	CloseClipboard();

	return 0;
}

$ gcc -o main main.c
main.c: In function ‘main’:
main.c:13:2: error: ‘thandl’ undeclared (first use in this function)
thandl = GlobalAlloc(str, len+1);
^~~~~~
main.c:13:2: note: each undeclared identifier is reported only once for each function it appears in
main.c:13:11: warning: implicit declaration of function ‘GlobalAlloc’ [-Wimplicit-function-declaration]
thandl = GlobalAlloc(str, len+1);
^~~~~~~~~~~
main.c:15:2: warning: implicit declaration of function ‘OpenClipboard’ [-Wimplicit-function-declaration]
OpenClipboard(NULL);
^~~~~~~~~~~~~
main.c:16:2: warning: implicit declaration of function ‘EmptyClipboard’ [-Wimplicit-function-declaration]
EmptyClipboard();
^~~~~~~~~~~~~~
main.c:18:2: warning: implicit declaration of function ‘SetClipboardData’ [-Wimplicit-function-declaration]
SetClipboardData(str, thandl);
^~~~~~~~~~~~~~~~
main.c:19:2: warning: implicit declaration of function ‘CloseClipboard’ [-Wimplicit-function-declaration]
CloseClipboard();
^~~~~~~~~~~~~~

windows.hでないと無理か。。
APIがOSによって異なることをあまり理解できていない。