情報工学科でよく利用するUNIXシステムには、X Windowと呼ばれるGUI(Graphical User Interface)環境があります。 最近ではUbuntuやDebian LinuxなどのイケてるPC-UNIXが一般化したこともあって、X Window上で動くアプリケーションを組む機会もあるかも知れませんので、とりあえずWindowsとX Window でよく使われる関数についてまとめてみました。 歴史的には、最初のWindowシステムとしてXeroxのAltoやPARCがあり、それを真似た(MacOSXではない)古いMac用Systemができて、それを真似たX windowができて、他にもQtなどの派生型ができ、MacまたはX windowを真似たWindowsができたという流れでできてきました。2種類以上の似たものを学ぶと原理の理解が進むため、2021年まではプロ演IIIでX windowを勉強していたのですが「いまやweb上でSPA(Single Page Applicartion)を作る時代ですよね!」ってことで、プロ演IIIではウェブ系プログラミングとPythonによるイベント駆動プログラミングをやることになりました。
| Windows | X Window | |
| メイン関数 | WinMain() | main () |
| ウィンドウ生成 | CreateWindow() | XCreateSimpleWindow() |
| ウィンドウ破壊 | DestroyWindow() | XDestroyWindow() |
| イベント取得 | GetMessage() | XNextEvent() |
| 文字列描画 | TextOut(), DrawText() | XDrawString() |
| フォント生成と適用 | CreateFont()後、SelectObject() | XLoadFont()後、XSetFont() |
| 文字色設定 | SetTextColor() | XSetForeground() |
| 文字背景色設定 | SetBkMode(), SetBkMode() | XSetBackground() |
| 直線描画 | LineTo() | XDrawLine() |
| 矩形描画(枠のみ) | Rectangle() | XDrawRectangle() |
| 矩形描画(塗りつぶし) | Rectangle(), FillRect() | XFillRectangle() |
| 円弧描画(枠のみ) | Ellipse() | XDrawArc() |
| 円弧描画(塗りつぶし) | Ellipse() | XFillArc() |
| 多角形描画(枠のみ) | Polyline() | XDrawLines() |
| 多角形描画(塗りつぶし) | Polygon() | XFillPolygon() |
| ペンスタイル設定 | CreatePen()後、SelectObject() | XSetLineAttributes() |
| ブラシスタイル設定 | CreateBrush()後、SelectObject() | XSetLineAttributes() |
| ビットマップ生成 | CreateCompatibleBitmap() | XCreatePixmap() |
| ビットマップコピー | BitBlt() | XCopyArea() |
Windowsプログラミングを行う上でよく分からない関数や変数型、メッセージ等がイヤというほど出てきます。 そんなときは、とりあえずVisual C++の統合環境の[ヘルプ(H)]-[検索(S)…]で調べてみましょう。 この講義ではAPI関数のプロトタイプや使い方などヘルプを見れば分かるようなことは説明しません。 インターネット上にはWindows APIプログラミングに関するホームページもたくさんありますので、検索エンジンなどを使っていろいろと調べてみるといいでしょう。