Environment   /   Windows 3.1

ホーム   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

そして、次のようにしてインストールします。

  1. Parallels Desktop 15 を起動してファイルメニューから「新規...」を選びます。
  2. 表示される「インストールアシスタント」で「DVD/イメージファイルからWindows/その他 OS をインストール」を選び、「続行」をクリックします。
  3. 次の画面で「ソースなしで続行する」にチェックを入れて、「続行をクリックします。
  4. 「オペレーティングシステムを選択してください」というプルダウンメニューが表示されますので、「他のWindows」から「Windows 3.11」を選んでください。
  5. 次の画面で名前を適当な名前にして、「インストール前に構成をカスタマイズする」にチェックを入れて「作成」をクリックします。
  6. 表示される「"つけた名前"の構成」で「ハードウェア」→「フロッピーディスクを選び、「ソース」プルダウンメニューで「イメージファイルを選択を選び、先ほどダウンロードした Microsoft DOS 6.0 (3.5) フォルダを選び、下のプルダウンメニューから「すべてのファイル (*)」を選択して、Disk1.imgを選びます。
  7. 「"つけた名前"の構成」画面を閉じ、「インストールアシスタント」画面で「続行」をクリックします。
  8. 「Microsoft MS-DOS 6 Setup」画面が表示されます。Enter キーを押してください。
  9. 次の画面で「Configure unallocated disk space (recommended).」が選ばれているのを確認して Enter キーを押します。もし選ばれていなかったら ↑↓ キーを使って選択してください。
  10. ドライブAにDisk 1をセットしてください。という画面が表示されます。そのまま Enter キーを押してください。
  11. 「この仮想マシンには OS がインストールされていません。」というアラートが出ますが、そのまま「OK」をクリックします。
  12. 「No boot device is available, press Enter to continue.」と表示されると思います。Enter キーを押します。
  13. フォーマットが始まって、「The settings are correct.」が選ばれた画面が現れます。United States が選ばれていますが、そのまま Enter キーを押します。Japanese という選択肢は存在しません。
  14. 「C:\DOS_」が選択された画面が現れます。そのまま Enter キーを押します。
  15. 次の画面で、ドライブ A: に Disk 2 を挿入してください。と指示されたら、Parallels のウィンドウ上部のフロッピーアイコンをクリックして Disk 2 を選択して Enter キーを押してください。
  16. ドライブ A: に Disk 3 を挿入してください。と指示されたら、同じように Disk 3 を選択して Enter キーを押してください。
  17. すべてのフロッピーディスクを取り除いてください、と指示されたら、フロッピーディスクを取り除いて(「切断」を選びます) Enter キーを押します。
  18. 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 をインストールします。

  1. 先ほど作成した MS DOS を起動して、フロップードライブに、先ほど解凍した「Microsoft Windows 3.1 (3.10.103) (3.5)」フォルダの Disk01.img を接続します。
  2. MS DOS 画面で次のようにして、Windows 3.1 のインストールを始めます。
    C:\>_
    // a: と入力してエンター
    A:\>_
    // setup.exe と入力してエンター
        
  3. 「Windows Setup」画面が表示されます。Enter キーを押してください。
  4. 次の画面でも Enter を押します。そして指示に従って フロッピーディスクを交換していきます。
  5. Name と Company を入力する画面が現れたら、それぞれ入力します。英語版なので日本語は入力できません。Company は入力しなくても大丈夫です。そして「Continue」ボタンをクリックします。
  6. 指示に従ってフロッピーディスクを交換して「Continue」をクリックします。
  7. プリンターを設定する画面が表示されます。私は「No Printer Attached」(プリンターは使わない)を選択して「Install」をクリックしました。
  8. 次の画面では「MS-DOS Editor」が選択された状態で「OK」をクリックしました。
  9. 次の画面で、マウスとウィンドウの使い方のチュートリアルを始めるかどうかを聞かれます。マウスはともかくとして、ウィンドウの使い方は必ず見てください。「Run Tutorial」をクリックします。
  10. 次の画面で、マウスのチュートリアルを見たい場合は「M」キーを、ウィンドウの使い方を見たい場合は「W」キーを押します。
  11. 最後に「Exit Tutorial」をクリックします。そして「Reboot」をクリックして、コンピュータを再起動します。
  12. コンピュータが再起動して、MS DOS の画面が表示されます。Windows 3.1 を起動するには次のようにタイプします。
    
    C:\>_
    // win と入力してエンター
        
    Windows 3.1 が起動します。
  13. Windows 3.1 を終了する場合は、「Program Manager」の左上のクローズボタンをダブルクリックします。
  14. 「Exit Windows」ダイアログが表示されたら「OK」をクリックします。
  15. 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)

そして次のようにしてインストールと設定をします。

  1. MS DOS を起動して、フロッピードライブに Turbo C++ For Windows 3.1 (3.5) フォルダの tcppw1.ima を接続します。
  2. MS DOS で win と入力して Windows 3.1 を起動します。
  3. 「Main」Group を開いて「File Manager」を起動します。
  4. a(フロッピードライブ)を選択して、install.exe をダブルクリックして起動します。
  5. 次の画面で「Install」をクリックします。
  6. 指示に従ってフロッピーディスクを交換して「OK」をクリックします。
  7. ツールのアイコンを追加する方法が説明されます。「OK」をクリックしてください。
  8. ファイルの設定方法が表示されます。「OK」をクリックしてください。
  9. Turbo C++ 31 のウィンドウが表示されたら左上のクローズボタンをダブルクリックしてウィンドウを閉じます。
  10. 「Accessories」グループを開いて「Notepad」ダブルクリックします。
  11. Notepad が起動したら、File メニューから Open を選び、オープンダイアログで File Name 欄に config.sys と入力して、Directories で c:\ を選択して OK をクリックします。
  12. 開いた CONFIG.SYS の FILES=30 を FILES=20 に書き換えて、Notepad の File メニューから Save を選びます。
  13. 再び Notepad の File メニューから Open を選び、オープンダイアログで File Name 欄に autoexec.bat と入力して、Directories で c:\ を選択して OK をクリックします。
  14. 開いた AUTOEXEC.BAT の PATH 行に ;C:\TCWIN\BIN と追加して、Notepad の File メニューから Save を選びます。
  15. Notepad ウィンドウ、Accessories ウィンドウ、Main ウィンドウを閉じて、Program Manager ウィンドウも閉じます。Exit Windows ダイアログが表示されたら OK をクリックして、Windows 3.1 を終了します。
  16. MS DOS 画面に戻りましたら、Parallels Destop の 処理メニューからストップを選んで MS DOS を終了します。実機の場合はコンピュータの電源を切ります。
  17. コンピュータを再起動しなければ、config.sys と autoexec.bat に記述した変更が有効になりませんので、Windows 3.1 と MS DOS は必ず終了してください。

Win16 プログラミング

以上で、Boland Turbo CPP のインストールと設定が完了しました。MS DOS を起動して、Windows 3.1 を起動してください。そして次のようにして Win16 プログラミングを始めます。

  1. Program Manager で Turbo C++ 3.1 アイコンをダブルクリックして、開いた Turbo C++ 3.1 ウィンドウで、Tubo C++ をダブルクリックします。
  2. About Turbo C++ ダイアログが表示されたら OK をクリックします。
  3. noname00.cpp が表示されたら、Options メニュー → Environment → Editor.. を選んで、Tab Size を 4 に、 Default Extension を c にして OK をクリックします。
  4. 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( ) マクロは使えません。
  5. 記述が終わりましたら、File メニューから Save を選び、Save File As ダイアログで File Name を winapp.c などにして OK をクリックします。
  6. コード画面に戻りましたら Run メニューから Run を選びと、ソースコードがビルドされて、アプリケーションウィンドウが起動します。
  7. 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 版は、どちらか選ばなければならないように思います。


3067 visits
Posted: Jul. 15, 2020
Update: Jul. 18, 2020

ホーム   C/C++チュートリアル   wxWidgetsへ戻る   目次