/*
 * WineBoot resources
 *
 * Copyright (C) 2008 CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 *
 */

#include "resource.h"

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT

IDD_ENDTASK DIALOG  0, 0, 276, 71
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "待機中"
FONT 9, "MS Shell Dlg"
BEGIN
    DEFPUSHBUTTON   "キャンセル",IDCANCEL,129,49,50,15
    PUSHBUTTON      "プロセスの終了",IDOK,51,49,71,15
    LTEXT           "ログオフおよび、再起動のプロセスをシミュレートしていますが、プログラムは反応していません。",
                    IDC_STATIC,7,7,262,19
    LTEXT           "プロセスを終了させると、保存していないデータは全て失われます。",
                    IDC_STATIC,7,28,262,15
END

IDD_WAITDLG DIALOG 0, 0, 200, 50
STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_CENTER | WS_POPUP | WS_DISABLED
CAPTION "Wine"
FONT 8, "MS Shell Dlg"
BEGIN
    ICON "", IDC_WAITICON, 3, 3, 10, 10
    LTEXT "%s にある Wine 設定を更新しています。\nしばらくお待ちください…。",
          IDC_WAITTEXT, 40, 5, 150, 40, SS_NOPREFIX
END
