Windows 95 で C/C++ GUI プログラミングをするための方法を説明しています。
Windows 95 は、Parallels Desktop 15 にインストールしています。Parallels Desktop 15 では、Windows 95 はサポート外なので、インターネット、macOS との間でのコピー&ペースト、VGA 以外の画面サイズは使用できません。
使用している Windows は、Windows 95 OSR 2.0 です。
Windows 95 では、Emacs は正常に動作しません。Windows 付属のメモ帳を使っています。ご自身の好みのテキストエディタを使ってください。
Code Blocks は、Windows 20000 以上で動作します。Windows 95 では、Code Blocks は使えません。
C/C++ コンパイラとして MinGW(Minimalist GNU for Windows)を使います。次のリンクから MinGW-3.0.0-1.exe をダウンロードしてください。
Find out more about MinGW - Minimalist GNU for Windows | SourceForge.net
macOS でダウンロードしたファイルを Parallels Desktop 15 の Windows 95 へコピーするには次のようにします。
MinGW-3.0.0-1 のインストールはすべてデフォルトのままで大丈夫です。
MinGW C/C++ コンパイラを便利に使うには Windows 95 の環境変数に次のようにして登録します。
MinGW 3.0.0 を使うには msvcrt.dll が必要です。しかし Windows 95 にはおそらく msvcrt.dll はデフォルトではインストールされていません。Parallels Desktop をお使いの場合は、次の方法で Windows 98 などから msvcrt.dll をコピーしてきます。
MinGW などの C/C++ コンパイラをインストールするだけで Windows API(Win32)プログラミングができるようになります。次のコードをメモ帳などで記述して、winapp.c などのファイル名で保存してください。
Windows のメモ帳の場合は、winapp.c.txt と、.txt がついてしまいます。必ずあとで .txt を取ってください。
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASS wc;
HWND hwnd;
MSG msg;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND + 1;
wc.lpszMenuName = NULL;
wc.lpszClassName = TEXT("WINDOW");
RegisterClass(&wc);
hwnd = CreateWindow(TEXT("WINDOW"),
TEXT("Hello Windows API!"),
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 300, 200,
NULL, NULL, hInstance, NULL);
while (GetMessage(&msg, NULL, 0, 0))
{
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
コマンドプロンプトを起動して、winapp.c を保存したディレクトリに移動してください。そして次のようにコマンドします。
// コンパイル
gcc winapp.c -o winapp -mwindows
// 実行
winapp
出来上がった winapp.exe をダブルクリックしても実行できます。winapp.exe をデスクトップなどに移動して、ダブルクリックしても実行できます。
wxWidgets は、MSYS というアプリケーションを使ってインストールします。
MSYS は、Windows に Unix 環境を提供するアプリケーションです。次のリンクから MSYS-1.0.10.exe をダウンロードします。それ以上のバージョンは、Windows 95 では使えません。
MinGW - Minimalist GNU for Windows - Browse /MSYS/Base/msys-core/msys-1.0.10 at SourceForge.net
ダウンロードした MSYS-1.0.10.exe も先ほど作った .dmg イメージの元になったフォルダに入れます。そして .dmg イメージを作り直し、Windows Me を再起動すると、Windows Me でも .dmg が使えるようになります。今後このようにして、macOS から Windows Me へデータを移していきます。
インストールする場所はデフォルトで指定されている C:\msys\1.0 にします。コマンドプロンプトが起動して、いろいろと質問されますが、すべてエンターキーを押してください。
インストールが終了すると、Read Me が表示されると思いますが、適宜閉じてください。デスクトップに MSYS のショートカットができます。それをダブルクリックすると MSYS のコンソールが開きます。確認できましたら MSYS のコンソールは一旦閉じておきます。
次のリンクから wxMSW-2.5.3-Setup.zip をダウンロードしてください。
wxWidgets - Browse /2.5.3 at SourceForge.net
解凍された wxMSW-2.5.3 フォルダの中の setup.exe をダブルクリックするとインストールが始まります。 インストール場所はデフォルトの C:\wxWidgets-2.5.3 にします。ただしこのインストーラーは必要なファイルを展開するだけで、実際のインストールは行いません。展開が終りましたら MSYS のコンソールを起動して、次のようにコマンドします。
// wxWidgets のディレクトリに移動します
cd C:/wxWidgets-2.5.3
// wxWidgets をコンフィギュア(環境設定)します
./configure --disable-shared
次のように表示されればコンフィギュアは成功です。なお、Windows 98 は Unicode 非対応です。
Configured wxWidgets 2.5.3 for `i686-pc-mingw32´
Which GUI toolkit should wxWidgets use? msw
Should wxWidgets be compiled into single library? no
Should wxWidgets be compiled in debug mode? no
Should wxWidgets be linked as a shared library? no
Should wxWidgets be compiled in Unicode mode? no
What level of wxWidgets compatibility should be enabled?
wxWidgets 2.2 no
wxWidgets 2.4 yes
Which libraries should wxWidgets use?
jpeg builtin
png builtin
regex builtin
tiff builtin
zlib builtin
odbc no
expat builtin
libmspack no
sdl no
続いて make と make install をします。
// まず make をします。
make
// make は時間がかかります。次のように表示されれば make は成功しています。
make[1]: Leaving directory `/c/wxWidgets-2.5.3/utils/wxrc´
// 次に make をインストールします。
make install
// 次のように表示されればインストールは成功です
------------------------------------------------------
The installation of wxWidgets is finished. On certain
platforms (e.g. Linux) you'll now have to run ldconfig
if you installed a shared library and also modify the
LD_LIBRARY_PATH (or equivalent) environment variable.
wxWidgets comes with no guarantees and doesn't claim
to be suitable for any purpose.
Read the wxWindows Licence on licencing conditions.
------------------------------------------------------
// ホームディレクトに戻ります。
cd
// バージョンを確認します。
wx-config --version
2.5.3
これで wxWidgets プログラミングができるようになりました。次のソースコードを記述して、 C:\msys\1.0\home\ユーザー名 に保存してください。
#include <wx/wx.h>
class Hello : public wxFrame
{
public:
Hello();
};
class App : public wxApp
{
public:
virtual bool OnInit();
};
Hello::Hello() : wxFrame(NULL, -1, wxT("Hello wxWidgets!"),
wxDefaultPosition, wxSize(300, 200))
{
Center();
}
IMPLEMENT_APP(App)
bool App::OnInit()
{
Hello *hello = new Hello();
hello->Show();
return true;
}
MSYS のコンソールを開いて次のようにコマンドします。コンソールを開いた場所が、C:\msys\1.0\home\ユーザー名 になっています。
// コンパイル
g++ wxapp.cpp `wx-config --cppflags --libs` -o wxapp -mwindows
// 実行
./wxapp
ディレクトリを開いて wxapp.exe をダブルクリックして実行することもできます。 wxapp.exe をデスクトップなどへ移動してもダブルクリックで実行できます。
インストールした wxWidgets は、C:\msys\1.0\local にコピーされます。C:\wxWidgets-2.5.3 は不要です。
コントロールパネルを使って wxWidgets-2.5.3 をアンイストールします。そして C:\ の wxWidgets-3.0.2 も削除します。
C:\msys\1.0\home\ユーザー名に wxapp.exe を削除して、もう一度 wxapp.cpp をコンパイルし直してください。正常にコンパイルできることでしょう。
Windows 95 への GTK のインストールはまだ成功していません。