ボーランド社が無償で提供しているC++コンパイラ。製品レベルのコンパイラが 無償で手に入るのは大変ありがたい。
Cygwin という Windows 上で UNIX 風な環境を提供しようとするライブラリと アプリケーション群。Native な Win32 アプリケーションも付属の コンパイラで作成可能。
socket やら bind やらの、いわゆるソケット API を呼び出す 前に初期化してやらないといけない。いわゆるおまじない。
WSADATA wsaData; if (WSAStartup(MAKEWORD( 2, 2 ), &wsaData)) { return 1; }変数の意味は知らないし、知りたいともおもわんよ。
スレッドを作成するには、
の3つの関数があるのだけれど、CreateThread() は作成したスレッドの C の標準関数の初期化をしないらしく、使ってはいけないらしい。 つまり、Win32API のみの呼出しが可能らしい。
_beginthread() は返すハンドルが無効らしい。なので外部からは なにもできなくなるらしい。
で、_beginthreadex() がまともな関数らしい。引数は CreateThread と 同じみたい。情報源は、
http://www.catkk.co.jp/~ando/milk/tips/win/createthread.html
なのでそちらを参照。すごい仕様。じゃあ CreateThread なんて つくんなよ。こんなすごいことがあるかと思うと Windows プログラム なんてつくりたくなくなるな。
なんかまた、すごいことが、プロセスが終了してもタスクバーにアイコンが のこる現象について、
http://www.sun-inet.or.jp/~yaneurao/rsp/rsp38to3F.html
に解説があります。Windows ってプログラミングすると、すごい ことが色々わかって、すごい。DestroyWindow の中で ShowWindow するって なんか、すごい。Microsoft って、すごい。ちなみに、このページは プログラミングするひとには色々面白い。
ShellExecute などで指定したファイルをオープンしたあとに Word で開いたなら、Word を終了しようとすると、固まる、 という現象に遭遇。試行錯誤の末、_beginthreadex で spawn した thread 内で ShellExecute すると固まる模様。main(?) thread で 起動した場合にはOK。理由は知らん。