Environment   /   Windows NT

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

Windows NT

Windows NT で C/C++ GUI プログラミングをするための方法を説明しています。

Windows NT は、Parallels Desktop 15 にインストールしています。Parallels Desktop 15 では、Windows NT はサポート外なので、インターネット、macOS との間でのコピー&ペースト、VGA 以外の画面サイズは使用できません。

使用している Windows は、Windows NT 4.0 Workstation です。

テキストエディタ

Windows NT では、Emacs は正常に動作しません。Windows 付属のメモ帳を使っています。ご自身の好みのテキストエディタを使ってください。

Code Blocks

Code Blocks は、Windows 20000 以上で動作します。Windows NT では、Code Blocks は使えません。

MinGW

C/C++ コンパイラとして MinGW(Minimalist GNU for Windows)を使います。次のリンクから MinGW-3.1.0-1.exe をダウンロードしてください。

Find out more about MinGW - Minimalist GNU for Windows | SourceForge.net

macOS でダウンロードしたファイルを Parallels Desktop 15 の Windows NT へコピーするには次のようにします。

  1. macOS でフォルダを新しく作り、その中にダウンロードした MinGW-3.1.0-1.exe を入れます。
  2. macOS に付属しているディスクユーティリティを起動して、「ファイル」メニューから「新規イメージ」→「フォルダからのイメージを作成」を選びます。
  3. 表示されたダイアログで MinGW-3.1.0-1.exe を入れたフォルダを選び「選択」をクリックします。
  4. 次にイメージフォーマットで「ハイブリッドイメージ(HFS+/ISO/UDF)」を選びデスクトップなどに「保存」します。
  5. 出来上がった .dmg を Parallels Desktop の CD/DVD に接続して、Windows NT を再起動すると、Windows NT のCD ドライブに .dmg が接続されます。

MinGW-3.1.0-1 のインストールはすべてデフォルトのままで大丈夫です。

MinGW C/C++ コンパイラを便利に使うには Windows NT の環境変数に次のパスを登録します。


// 登録するパス
C:\MinGW\bin

// パスの登録が終わりましたら、コマンドプロンプトを起動して GCC のバージョン確認をします。
gcc --version
gcc (GCC) 3.2.3 (mingw special 20030504-1
    


Windows API プログラミング

MinGW などの C/C++ コンパイラをインストールするだけで Windows API(Win32)プログラミングができるようになります。次のコードをメモ帳などで記述して、winapp.c などのファイル名で保存してください。

Windows のメモ帳の場合は、winapp.c.txt と、.txt がついてしまいます。必ずあとで .txt を取ってください。

winapp.c


#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 プログラミング

wxWidgets は、MSYS というアプリケーションを使ってインストールします。

MSYS

MSYS は、Windows に Unix 環境を提供するアプリケーションです。次のリンクから MSYS-1.0.11.exe をダウンロードします。それ以上のバージョンは、Windows NT では使えません。

MinGW - Minimalist GNU for Windows - Browse /MSYS/Base/msys-core/msys-1.0.11 at SourceForge.net

ダウンロードした MSYS-1.0.11.exe も先ほど作った .dmg イメージの元になったフォルダに入れます。そして .dmg イメージを作り直し、Windows Me を再起動すると、Windows Me でも .dmg が使えるようになります。今後このようにして、macOS から Windows Me へデータを移していきます。

インストールする場所はデフォルトで指定されている C:\msys\1.0 にします。コマンドプロンプトが起動して、いろいろと質問されますが、すべてエンターキーを押してください。

インストールが終了すると、Read Me が表示されると思いますが、適宜閉じてください。デスクトップに MSYS のショートカットができます。それをダブルクリックすると MSYS のコンソールが開きます。確認できましたら MSYS のコンソールは一旦閉じておきます。


wxWidgets

次のリンクから Previous Stable Release 2.8.12 の wxMSW: Installer をダウンロードしてください。

Downloads - wxWidgets

インストール場所はデフォルトの C:\wxWidgets-2.8.12 にします。ただしこのインストーラーは必要なファイルを展開するだけで、実際のインストールは行いません。展開が終りましたら MSYS のコンソールを起動して、次のようにコマンドします。


// wxWidgets のディレクトリに移動します
cd C:/wxWidgets-2.8.12

// wxWidgets をコンフィギュア(環境設定)します
./configure --disable-shared
    

次のように表示されればコンフィギュアは成功です。なお、Windows 98 は Unicode 非対応です。


Configured wxWidgets 2.8.12 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.4      no
                                       wxWidgets 2.6      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.8.12/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.8.12
    


これで wxWidgets プログラミングができるようになりました。次のソースコードを記述して、 C:\msys\1.0\home\ユーザー名 に保存してください。

wxapp.cpp


#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 の削除

インストールした wxWidgets は、C:\msys\1.0\local にコピーされます。C:\wxWidgets-2.8.12 は不要です。

コントロールパネルを使って wxWidgets-2.8.12 をアンイストールします。そして C:\ の wxWidgets-2.8.12 も削除します。

C:\msys\1.0\home\ユーザー名に wxapp.exe を削除して、もう一度 wxapp.cpp をコンパイルし直してください。正常にコンパイルできることでしょう。



GTK プログラミング

Windows NT への GTK のインストールはまだ成功していません。


37223 visits
Posted: Jul. 15, 2020
Update: Jul. 15, 2020

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