⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 package.cpp

📁 C-smile OOL is a scripting language with C++-like grammar. It has compiler, VM running bytecodes and
💻 CPP
字号:
#include "shell.h"

inline cs_value v(const char *str) { return csr.string_value(str);  }
inline cs_value v(int i) { return csr.int_value(i);  }

void define_shell_message();

struct const_def_t 
{
  int   value;
  const char* name;
};
const_def_t ask_const[] = 
{
  { MB_OK                 ,"OK" },
  { MB_OKCANCEL           ,"OK_CANCEL"},
  { MB_ABORTRETRYIGNORE   ,"ABORT_RETRY_IGNORE"},
  { MB_YESNOCANCEL        ,"YES_NO_CANCEL"},
  { MB_YESNO              ,"YES_NO"},
  { MB_RETRYCANCEL        ,"RETRY_CANCEL" },
  { MB_ICONERROR          ,"ICON_ERROR"},
  { MB_ICONQUESTION       ,"ICON_QUESTION"},
  { MB_ICONWARNING        ,"ICON_WARNING" },
  { MB_ICONINFORMATION    ,"ICON_INFORMATION"},
  { MB_DEFBUTTON1         ,"DEFAULT_BUTTON_1"},
  { MB_DEFBUTTON2         ,"DEFAULT_BUTTON_2"},
  { MB_DEFBUTTON3         ,"DEFAULT_BUTTON_3"},
  { MB_DEFBUTTON4         ,"DEFAULT_BUTTON_4"},
  { MB_APPLMODAL          ,"APPLICATION_MODAL"},
  { MB_SYSTEMMODAL        ,"SYSTEM_MODAL"},
  { IDABORT               ,"ABORT_BUTTON"},
  { IDCANCEL              ,"CANCEL_BUTTON"},
  { IDIGNORE              ,"IGNORE_BUTTON"},
  { IDNO                  ,"NO_BUTTON"},
  { IDOK                  ,"OK_BUTTON"},
  { IDRETRY               ,"RETRY_BUTTON"},
  { IDYES                 ,"YES_BUTTON"},
  { 0      ,NULL}
};



cs_value function_ask(int argn, cs_value *argv);

void init_package() 
{
  // define package
  cs_value pkg = csr.define_class("shell");
  // define static function 
  csr.define_function(pkg,  "ask",      CSMT_SFUNCTION, function_ask );
  for(const_def_t *pd = ask_const; pd && pd->name; pd++ )
    csr.define_member(pkg, pd->name , CSMT_CONST, v(pd->value) );

    

}

cs_value function_ask(int argn, cs_value *argv) 
{
  const char *msg = 0; 
  const char *caption = "c-smile";
  int   flags = 0;
  if(argn >= 1 && csr.value_type(argv[0]) == CS_STRING) 
  {
    msg = csr.get_string_chars(argv[0]); 
  }
  if(argn >= 2 && csr.value_type(argv[1]) == CS_STRING) 
  {
    caption = csr.get_string_chars(argv[1]); 
  }
  if(argn >= 3 && csr.value_type(argv[2]) == CS_INTEGER) 
  {
    flags = csr.get_int(argv[2]);
  }
  if(msg == 0)
    csr.throw_error(v("nothing to ask"));

  int result = ::MessageBox(0,msg,caption,flags); 

  return csr.int_value(result);

} 

/*
cs_value    cls_message;
cs_value    shell_message_say(int argn, cs_value* argv); 
cs_bookmark bm_shell_message_caption;
cs_bookmark bm_shell_message_icon;
cs_bookmark bm_shell_message_buttons;

void define_shell_message() 
{
  cls_message = csr.define_class("shell::message");
  // define instance fields
  bm_shell_message_caption = 
        csr.define_member(cls_message,  "caption", CSMT_DATA, csr.null_value() );
  bm_shell_message_icon = 
        csr.define_member(cls_message,  "icon", CSMT_DATA, csr.null_value() );
  bm_shell_message_buttons = 
        csr.define_member(cls_message,  "buttons", CSMT_DATA, csr.null_value() );
  // define constructor
  csr.define_function(cls_message,  "message",      CSMT_SFUNCTION, method_say );

}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -