Какой Windows API я выбираю для приложения толстого клиента?

Вы можете поместить свою переменную b_alt в первую серию в качестве дополнительной информации:

hc_add_series(name = "c", additionalInfo = a$b_alt, data = a$c) %>%

Тогда вы можете найти эту переменную AdditionalInfo в объекте первой серии здесь :

event.point.series.chart.series[0].options.additionalInfo[event.point.index]

Весь код :

library("shiny")
library("highcharter")

ui <- shinyUI(
  fluidPage(
    column(width = 8, highchartOutput("hcontainer", height = "500px")),
    column(width = 4, textOutput("text"))
  )
)

server <- function(input, output) {      

  a <- data.frame(b = LETTERS[1:10], b_alt = LETTERS[11:20], c = 11:20, d = 21:30, e = 31:40)

  output$hcontainer <- renderHighchart({      

    canvasClickFunction <- JS("function(event) {Shiny.onInputChange('canvasClicked', [this.name, event.point.series.chart.series[0].options.additionalInfo[event.point.index]]);}")
    legendClickFunction <- JS("function(event) {Shiny.onInputChange('legendClicked', this.name);}")

    highchart() %>% 
      hc_xAxis(categories = a$b) %>% 
      hc_add_series(name = "c", additionalInfo = a$b_alt, data = a$c) %>%
      hc_add_series(name = "d", data = a$d) %>% 
      hc_add_series(name = "e", data = a$e) %>%
      hc_plotOptions(series = list(events = list(click = canvasClickFunction, legendItemClick = legendClickFunction))) %>%
      hc_chart(type = "column")

  })      

  makeReactiveBinding("outputText")

  observeEvent(input$canvasClicked, {
    outputText <<- paste0("You clicked on series ", input$canvasClicked[1], " and the bar you clicked was from category ", input$canvasClicked[2], ".") 
  })

  observeEvent(input$legendClicked, {
    outputText <<- paste0("You clicked into the legend and selected series ", input$legendClicked, ".")
  })

  output$text <- renderText({
    outputText      
  })
}

shinyApp(ui, server) 
6
задан Jon Seigel 27 April 2010 в 03:45
поделиться

6 ответов

QT хорошо работает с окнами. Кроме того, это независимо от платформы.

4
ответ дан 9 December 2019 в 20:50
поделиться

Windows Presentation Foundation (WPF) является новым стандартом большого приложения Microsoft для Windows. Ваш C++ портирует на него, но большинство людей разрабатывает C# против него.

1
ответ дан 9 December 2019 в 20:50
поделиться

Нет действительно "предпочтительного" языка и API в Windows, больше как большой выбор. Очевидные являются необработанными вызовами Win32 прямо к операционной системе (поэтому действительно просто C вызовы), или тонкая абстракция к тому же (например, WTL, Windows Template Library, который является C++), или более толстая абстракция (например, MFC, также C++).

Microsoft в эти дни довольно борется WPF, но это - часть управляемого мира.NET. Можно записать C++ в этом, таким образом, Вы смогли портировать свое приложение, но я буду ожидать, что это было бы значительное усилие.

Учитывая, что Вы используете GTK + или QT на Linux, очевидная вещь состояла бы в том, чтобы изучить использование обоих из тех, которые в Windows, и как существуют - тот способ, которым Вы могли сохранить Linux и версии Windows почти идентичными. Они не естественный выбор для приложения только для Windows, поскольку они не родом из мира Windows, но, учитывая Ваше образование они имели бы большой смысл. Вы, возможно, должны были бы поместить некоторое время в тонкую настройку их для получения стиля Приложения Windows просто право, но это должно быть больше, чем компенсировано отсутствием потребности записать совершенно новый уровень представления.

4
ответ дан 9 December 2019 в 20:50
поделиться

Я склоняюсь к Windows Presentation Foundation. Я предполагаю, что это - ответ Microsoft на Какао на Mac OS X, поскольку "это имеет целью объединять много прикладных служб: пользовательский интерфейс, 2D и 3D рисунок, исправленные и адаптивные документы, усовершенствовал типографию, векторную графику, растровую графику, анимацию, привязку данных, аудио и видео". Это походит на Какао мне :-)

Я предполагаю, что реализация была бы подобна моей реализации Mac OS X:

  • Модель: межплатформенные классы C++
  • Посмотреть: WPF и C#
  • Контроллер: C++ / CLI или что-то еще

Принимая во внимание, что на Mac OS X классы представления реализованы в Objective C, в то время как классы контроллера являются реализованным Objective C ++. Объекты представления "говорят" с объектами контроллера в Objective C, в то время как объекты контроллера "говорят" с объектами модели в C++.

C++ является / CLI в Windows как Objective C ++ на Mac OS X или является классами C#, которые я определяю недоступный в C++ / CLI?

Каков "корректный" или "предпочтительный" способ получить доступ к классам C++ с управляемого языка .NET?

0
ответ дан 9 December 2019 в 20:50
поделиться

Если бы можно заставить C++ компилировать с набором инструментальных средств Visual Studio (а не gcc или mingw), я очень рекомендовал бы, чтобы Вы сделали .lib и затем связали его в C++ / блок CLI, где Вы выставляете управляемый API своей библиотеке.

Затем можно использовать C# и WinForms API или WPF и иметь чрезвычайно богатые и собственные окна, выглядящие приложением. Эта работа довольно проста и если Вы будете готовы переписать GUI, то она будет иметь лучший результат и будет самой легкой развернуться.

Один протест состоит в том при необходимости в нем для работы над машинами, где.NET не могла бы присутствовать - если так, я буду придерживаться.NET 2.0 (и WinForms). У Вас должен также быть свой установщик, обнаруживают и устанавливают его. Если Вы готовы установить.NET 3.5 если не существующий, то пойдите для WPF.

2
ответ дан 9 December 2019 в 20:50
поделиться

GTK + работает просто великолепно в Windows. Если бы Вы уже знакомы с ним, это - то, что я использовал бы. Хотя производительность, вероятно, не соответствует производительности собственного Windows UI, освобождает, как MFC, это достаточно хорошо, если Ваше приложение не действительно ui-performance-dependent. Одним большим примером использования GTK + для всех платформ является Гибридный язык.

Не может действительно ответить на Ваш второй вопрос, не видя некоторый код, но я не вижу, почему он отличался бы от Вашего подхода образцового контроллера представления к другим платформам.

1
ответ дан 9 December 2019 в 20:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: