Bonjour
Je découvre F# avec Visual Studio et j'étudie des codes existants, certains sont extraits de fichiers de scripts (?) .fsx.
J'ai réussi à en traduire un en programmes F# pour Visual Studio mais il plante au moment de la création d'une fenêtre.
Je livre le début du code :
La fenêtre w ne se créée pas et j'ai ce message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 //Author: Scott Brown //10/10/2010 //This code is licensed under the Code Project Open License (CPOL) // #r "WindowsBase" // #r "PresentationCore" // #r "PresentationFramework" open System open System.Windows open System.Windows.Markup open System.Windows.Controls open System.Windows.Shapes open System.Windows.Media open System.Xml open System.Collections.Generic //Make a Canvas subclass which supports ScrollViewer type ScrollableCanvas() = inherit Canvas() override canvas.MeasureOverride limit: Size = let availableSize = new Size(1000000., 1000000.) let mutable maxHeight = 0. let mutable maxWidth = 0. for element : UIElement in base.InternalChildren do if element <> null then element.Measure(availableSize) |> ignore let mutable left = Canvas.GetLeft(element) let mutable top = Canvas.GetTop(element) left <- left + element.DesiredSize.Width top <- top + element.DesiredSize.Height maxWidth <- if maxWidth < left then left else maxWidth maxHeight <- if maxHeight < top then top else maxHeight let newSize = new Size(Width=maxWidth, Height=maxHeight) newSize let w = new Window(Topmost=true)Si j'étais en C ou en C++ je pense que CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) aurait suffi a résoudre le problème mais en F# ?Exception non gérée : System.InvalidOperationException : Le thread appelant doit être en mode STA comme l'exigent de nombreux composants de l'interface utilisateur.
Merci
Partager