/*
 * OleView (Ko.rc)
 * Korean Language Support
 *
 * Copyright 2006 Piotr Caban
 * Copyright 2006,2010 YunSong Hwang
 *
 * 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"

#pragma code_page(65001)

LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT

DLG_CREATEINSTON DIALOG 0, 0, 250, 41
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "다른 머신(machine)에 접속"
FONT 9, "MS Shell Dlg"
{
    LTEXT   "머신(&Machine) 이름:", -1, 5, 6, 190, 8
    EDITTEXT    IDC_MACHINE, 5, 16, 190, 12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "확인(&O)", IDOK, 200, 5, 45, 14
    PUSHBUTTON  "취소(&C)", IDCANCEL, 200, 22, 45, 14
}

DLG_SYSCONF DIALOG 0, 0, 170, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "시스템 설정"
FONT 9, "MS Shell Dlg"
{
    LTEXT   "시스템 셋팅", -1, 5, 6, 160, 8
    CHECKBOX    "DCOM 허용(&E)", IDC_ENABLEDCOM, 5, 20, 160, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX    "원격 연결 허용(&R) (Win95만 해당)", IDC_ENABLEREMOTE, 5, 35, 160, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    LTEXT   "이 셋팅은 오직 레지스트리 값만 바꿉니다.\nWIne의 성능에는 아무 영향을 안 미칩니다.", -1, 5, 50, 160, 40
    DEFPUSHBUTTON   "확인(&O)", IDOK, 70, 80, 45, 14
    PUSHBUTTON  "취소(&C)", IDCANCEL, 120, 80, 45, 14
}

DLG_DEFAULT_IV DIALOG 0, 0, 280, 50
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "기본 인터페이스 보기"
FONT 9, "MS Shell Dlg"
{
  LTEXT   "인터페이스", -1, 5, 6, 50, 8
  LTEXT   "", IDC_LABEL, 60, 6, 145, 8
  LTEXT   "IID:", -1, 5, 16, 50, 8
  LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
  DEFPUSHBUTTON   "닫기(&C)", IDCANCEL, 230, 6, 45, 14
  PUSHBUTTON  "타입 정보 보기(&V)", IDC_VIEWTYPEINFO, 6, 31, 70, 14, WS_DISABLED
}

DLG_IPERSIST_IV DIALOG 0, 0, 280, 29
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "IPersist 인터페이스 보기"
FONT 9, "MS Shell Dlg"
{
  LTEXT   "클래스 이름:", -1, 5, 6, 50, 8
  LTEXT   "", IDC_LABEL, 60, 6, 145, 8
  LTEXT   "CLSID:", -1, 5, 16, 50, 8
  LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
  DEFPUSHBUTTON   "닫기(&C)", IDCANCEL, 230, 6, 45, 14
}

DLG_IPERSISTSTREAM_IV DIALOG 0, 0, 280, 68
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "IPersistStream 인터페이스 보기"
FONT 9, "MS Shell Dlg"
{
  LTEXT   "클래스 이름:", -1, 5, 6, 50, 8
  LTEXT   "", IDC_LABEL, 60, 6, 145, 8
  LTEXT   "CLSID:", -1, 5, 16, 50, 8
  LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
  DEFPUSHBUTTON   "닫기(&C)", IDCANCEL, 230, 6, 45, 14
  PUSHBUTTON  "&IsDirty", IDC_ISDIRTY_BUTTON, 6, 31, 50, 14
  LTEXT   "???", IDC_ISDIRTY, 60, 34, 145, 8
  PUSHBUTTON  "&GetSizeMax", IDC_GETSIZEMAX_BUTTON, 6, 49, 50, 14
  LTEXT   "???", IDC_GETSIZEMAX, 60, 52, 145, 8
}
