ホーム
C/C++チュートリアル
wxWidgetsへ戻る
Windows 3.1
Windows 3.1 で Windows API(Win16)C GUI プログラミングをする方法を説明しています。
Windows 3.1 は、Parallels Desktop 15 にインストールしています。実機や他のバーチャルマシンにインストールする要領もだいたい同じだと思います。Parallels Desktop 15 では、Windows 3.1 はサポート外なので、インターネット、macOS との間でのコピー&ペースト、VGA 以外の画面サイズは使用できません。
使用している Windows は、Windows 3.1 英語版です。
テキストエディタ
Windows API のための IDE(統合開発環境)に付属しているエディタと Windows 3.1 に付属している Notepad(メモ帳)を使用します。
MS DOS
Windows 3.1 は、MS DOS の 1 つのアプリケーションとして実行されます。まず MS DOS のインストール方法を説明します。
次のリンクから Microsoft MS-DOS 6.0 (Full) (3.5-1.44mb) の English 版をダウンロードして解凍してください。
WinWorld: MS-DOS 6.0
そして、次のようにしてインストールします。
Parallels Desktop 15 を起動してファイルメニューから「新規...」を選びます。
表示される「インストールアシスタント」で「DVD/イメージファイルからWindows/その他 OS をインストール」を選び、「続行」をクリックします。
次の画面で「ソースなしで続行する」にチェックを入れて、「続行をクリックします。
「オペレーティングシステムを選択してください」というプルダウンメニューが表示されますので、「他のWindows」から「Windows 3.11」を選んでください。
次の画面で名前を適当な名前にして、「インストール前に構成をカスタマイズする」にチェックを入れて「作成」をクリックします。
表示される「"つけた名前"の構成」で「ハードウェア」→「フロッピーディスクを選び、「ソース」プルダウンメニューで「イメージファイルを選択を選び、先ほどダウンロードした Microsoft DOS 6.0 (3.5) フォルダを選び、下のプルダウンメニューから「すべてのファイル (*)」を選択して、Disk1.imgを選びます。
「"つけた名前"の構成」画面を閉じ、「インストールアシスタント」画面で「続行」をクリックします。
「Microsoft MS-DOS 6 Setup」画面が表示されます。Enter キーを押してください。
次の画面で「Configure unallocated disk space (recommended).」が選ばれているのを確認して Enter キーを押します。もし選ばれていなかったら ↑↓ キーを使って選択してください。
ドライブAにDisk 1をセットしてください。という画面が表示されます。そのまま Enter キーを押してください。
「この仮想マシンには OS がインストールされていません。」というアラートが出ますが、そのまま「OK」をクリックします。
「No boot device is available, press Enter to continue.」と表示されると思います。Enter キーを押します。
フォーマットが始まって、「The settings are correct.」が選ばれた画面が現れます。United States が選ばれていますが、そのまま Enter キーを押します。Japanese という選択肢は存在しません。
「C:\DOS_」が選択された画面が現れます。そのまま Enter キーを押します。
次の画面で、ドライブ A: に Disk 2 を挿入してください。と指示されたら、Parallels のウィンドウ上部のフロッピーアイコンをクリックして Disk 2 を選択して Enter キーを押してください。
ドライブ A: に Disk 3 を挿入してください。と指示されたら、同じように Disk 3 を選択して Enter キーを押してください。
すべてのフロッピーディスクを取り除いてください、と指示されたら、フロッピーディスクを取り除いて(「切断」を選びます) Enter キーを押します。
MS DOS が起動して、C:\>_ というプロンプトが表示されると思います。この画面をこのまま開いておくか、「処理」メニューから「ストップ」を選んで、この画面を閉じます。
Windows 3.1
次のリンクから Windows 3.1 (Retail) (3.5-1.44mb) の English 版をダウンロードして解凍してください。
WinWorld: Windows 3.0 / 3.1 3.1
そして次のようにして Windows 3.1 をインストールします。
先ほど作成した MS DOS を起動して、フロップードライブに、先ほど解凍した「Microsoft Windows 3.1 (3.10.103) (3.5)」フォルダの Disk01.img を接続します。
MS DOS 画面で次のようにして、Windows 3.1 のインストールを始めます。
C:\>_
// a: と入力してエンター
A:\>_
// setup.exe と入力してエンター
「Windows Setup」画面が表示されます。Enter キーを押してください。
次の画面でも Enter を押します。そして指示に従って フロッピーディスクを交換していきます。
Name と Company を入力する画面が現れたら、それぞれ入力します。英語版なので日本語は入力できません。Company は入力しなくても大丈夫です。そして「Continue」ボタンをクリックします。
指示に従ってフロッピーディスクを交換して「Continue」をクリックします。
プリンターを設定する画面が表示されます。私は「No Printer Attached」(プリンターは使わない)を選択して「Install」をクリックしました。
次の画面では「MS-DOS Editor」が選択された状態で「OK」をクリックしました。
次の画面で、マウスとウィンドウの使い方のチュートリアルを始めるかどうかを聞かれます。マウスはともかくとして、ウィンドウの使い方は必ず見てください。「Run Tutorial」をクリックします。
次の画面で、マウスのチュートリアルを見たい場合は「M」キーを、ウィンドウの使い方を見たい場合は「W」キーを押します。
最後に「Exit Tutorial」をクリックします。そして「Reboot」をクリックして、コンピュータを再起動します。
コンピュータが再起動して、MS DOS の画面が表示されます。Windows 3.1 を起動するには次のようにタイプします。
C:\>_
// win と入力してエンター
Windows 3.1 が起動します。
Windows 3.1 を終了する場合は、「Program Manager」の左上のクローズボタンをダブルクリックします。
「Exit Windows」ダイアログが表示されたら「OK」をクリックします。
MS DOS に戻ります。コンピュータを終了するには、Parallels Desktop の「処理」メニューから「ストップ」を選びます。実機の場合は、MS DOS 画面に戻ったら、コンピュータの電源を切ります。
Borland Turbo CPP For Windows 3.1
現在、Windows 3.1 で Windows API(Win16)プログラミングするための IDE(統合開発環境)としては、「Boland Turbo Cpp For Windows 3.1」と「Microsoft Visual C++ 1.0 Standard」と「Microsoft Visual C++ 1.0 Professional」の 3 つが使えます。Boland Turbo Cpp と Microsoft Visual C++ は両方インストールしておくことができます。
ここではまず、一番サイズの小さい「Boland Turbo CPP For Windows 3.1」のインストールと使い方を説明します。
次のリンクから Borland Turbo CPP For Windows 3.1 (3.5) English 版をダウンロードして解凍してください。
WinWorld: Borland Turbo C++ 3.x (Win)
そして次のようにしてインストールと設定をします。
MS DOS を起動して、フロッピードライブに Turbo C++ For Windows 3.1 (3.5) フォルダの tcppw1.ima を接続します。
MS DOS で win と入力して Windows 3.1 を起動します。
「Main」Group を開いて「File Manager」を起動します。
a(フロッピードライブ)を選択して、install.exe をダブルクリックして起動します。
次の画面で「Install」をクリックします。
指示に従ってフロッピーディスクを交換して「OK」をクリックします。
ツールのアイコンを追加する方法が説明されます。「OK」をクリックしてください。
ファイルの設定方法が表示されます。「OK」をクリックしてください。
Turbo C++ 31 のウィンドウが表示されたら左上のクローズボタンをダブルクリックしてウィンドウを閉じます。
「Accessories」グループを開いて「Notepad」ダブルクリックします。
Notepad が起動したら、File メニューから Open を選び、オープンダイアログで File Name 欄に config.sys と入力して、Directories で c:\ を選択して OK をクリックします。
開いた CONFIG.SYS の FILES=30 を FILES=20 に書き換えて、Notepad の File メニューから Save を選びます。
再び Notepad の File メニューから Open を選び、オープンダイアログで File Name 欄に autoexec.bat と入力して、Directories で c:\ を選択して OK をクリックします。
開いた AUTOEXEC.BAT の PATH 行に ;C:\TCWIN\BIN と追加して、Notepad の File メニューから Save を選びます。
Notepad ウィンドウ、Accessories ウィンドウ、Main ウィンドウを閉じて、Program Manager ウィンドウも閉じます。Exit Windows ダイアログが表示されたら OK をクリックして、Windows 3.1 を終了します。
MS DOS 画面に戻りましたら、Parallels Destop の 処理メニューからストップを選んで MS DOS を終了します。実機の場合はコンピュータの電源を切ります。
コンピュータを再起動しなければ、config.sys と autoexec.bat に記述した変更が有効になりませんので、Windows 3.1 と MS DOS は必ず終了してください。
Win16 プログラミング
以上で、Boland Turbo CPP のインストールと設定が完了しました。MS DOS を起動して、Windows 3.1 を起動してください。そして次のようにして Win16 プログラミングを始めます。
Program Manager で Turbo C++ 3.1 アイコンをダブルクリックして、開いた Turbo C++ 3.1 ウィンドウで、Tubo C++ をダブルクリックします。
About Turbo C++ ダイアログが表示されたら OK をクリックします。
noname00.cpp が表示されたら、Options メニュー → Environment → Editor.. を選んで、Tab Size を 4 に、 Default Extension を c にして OK をクリックします。
noname00.cpp に次のようにソースコードを記述してください。
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int PASCAL 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)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "WINDOW";
RegisterClass(&wc);
hwnd = CreateWindow("WINDOW",
"Hello Win16!",
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);
}
コードを書きやすいように noname00.cpp の画面を Maximize(最大化)しています。
ソースコードの最後は改行しておかないとコンパイラに警告されます。
Boland Turbo CPP では、WinMain 関数の呼び出し規約は WINAPI ではなく PASCAL です。Win16 では TEXT( ) マクロは使えません。
記述が終わりましたら、File メニューから Save を選び、Save File As ダイアログで
File Name を winapp.c などにして OK をクリックします。
コード画面に戻りましたら Run メニューから Run を選びと、ソースコードがビルドされて、アプリケーションウィンドウが起動します。
Main グループの File Manager で c:\tcwin\bin の winapp.exe をダブルクリックしても、アプリケーションは起動します。
Win16 API
Windows 3.1 と Boland Turbo C++ を使ったサンプルプログラムの掲載を始めました。
Win16 API
Microsoft Visual C++ 1.0
Boland Turbo C++ がコンパクトで使いやすかったので、私は、Turbo C++ を使うことにします。
記念すべき Microsoft Visual C++ 1.0 を使いたい場合は、次のリンクからダウンロードできます。
WinWorld: Visual C++ 1.x
English 版ですが、Microsoft Visual C++ 1.0 Professional (3.5-1.44mb) か Microfofut Visual C++ 1.0 Standard (3.5-1.44mb) がインストールしやすいと思います。
Boland Turbo C++ と Microsoft Visual C++ は両方インストールすることができます。Visual C++ の Professional 版と Standard 版は、どちらか選ばなければならないように思います。
Posted: Jul. 15, 2020
Update: Jul. 18, 2020