Laden...
K
KainPlan myCSharp.de - Member
Fachinformatiker/Anwendungsentwicklung Gelsenkirchen Dabei seit 27.02.2009 133 Beiträge
Benutzerbeschreibung

Forenbeiträge von KainPlan Ingesamt 133 Beiträge

30.06.2015 - 09:53 Uhr

Hi,

ich bin gerade dabei eine Simple Chat App zu schreiben und stoße auf folgendes Problem.
Zum darstellen meiner Chat-Nachrichten nutze ich eine ListBox die Anbindung der Daten erfolgt via Binding einer ObservableCollection. Nun möchte ich, wie es für einen Chat üblich ist, das immer zur neusten Nachricht gescrollt wird, was aber nur bei 60% der fälle funktioniert, da so wie ich glaube einfach manchmal das Item im visuellen Baum noch nicht vorhanden ist, aber schon versucht wird zu scrollen. Ich warte auf das Collection Changed event der ObserveableCollection um das Scrollen zu triggern, was wie ich glaube auch der Fehler ist. Ich habe jedoch keine Ahnung wie ich sonst mitbekommen soll wann ein Item der ListBox hinzugefügt wurde.

Hat hier evtl. jemand eine Ahnung wie man das geschickt lösen könnte?

16.10.2013 - 15:55 Uhr

Hi,

ich reiß mir gerade die Haare aus, ich weiß genau das ich so einen Fehler schonmal beim Pivot hatte aber ich weiß nicht mehr was ich damals gemacht hatte. Jedenfalls will ich einen DataStateBehavior zu meinem UserControl hinzufügen, allerdings bekomm ich während der** !ausführung!** eine parsing exception (System.Windows.Markup.XamlParseException) dessen position immer auf das letzte "=" des DataStateBehavior zeigt. Auch im XAML Editor wird ein Fehler angezeigt allerdings bei einer Border und das Passt irgendwie alles nicht. Ich hab gerade ein Brett vorm Kopf 😦.

Edit: Ich hab Übersichtshalber mal den VisualStateManager-Block entfernt.


<UserControl x:Class="TLApp.UserControls.Articles.ArticleTemplate"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
    xmlns:local="clr-namespace:TLApp" 
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="480" d:DesignWidth="480">
    
    <Grid Tap="ArtcileTapped">
        <local:ArticleTemplateSelector Content="{Binding}">
            <local:ArticleTemplateSelector.Article>
                <DataTemplate>
                    <Grid Margin="0" Width="480" Height="180" Background="White">
                        <i:Interaction.Behaviors>
                            <ic:DataStateBehavior Binding="{Binding Selected}" Value="True" FalseState="Normal" TrueState="Selected"  />
                        </i:Interaction.Behaviors>                        
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="128" />
                            <ColumnDefinition Width="1*" />
                        </Grid.ColumnDefinitions>
                        <Image HorizontalAlignment="Center" Grid.Column="0" Source="{Binding Article, Converter={StaticResource ArticleImageConverter}, Mode=OneWay}" />
                        <Grid Grid.Column="1" Margin="10">
                            <TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding Article.ArticleName}" FontSize="23" FontWeight="Bold" Foreground="#FF0C0C0C" TextWrapping="Wrap" />
                            <TextBlock HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Row="2" Foreground="#FF0C0C0C">
                                <Run Text="{Binding Article.PriceBrutto, StringFormat=\{0:0.00\}}" />
                                <Run Text="{Binding Localizedresources.STR_Currency, Source={StaticResource LocStrings}}" />
                            </TextBlock>
                        </Grid>
                        <Border VerticalAlignment="Bottom" Height="2" Width="480" Background="{StaticResource list_separator}" />
                    </Grid>
                </DataTemplate>
            </local:ArticleTemplateSelector.Article>

Hat denn echt niemand eine Idee? Ich versteh das echt nicht wenn ich ein neues Projekt anlege mit genau diesem UserControl funktioniert es ohne Probleme..

28.05.2013 - 11:04 Uhr

Hallo,

ich versuche gerade mit biegen und brechen die Items in einem ItemsControl zu animieren wenn sie in Sicht gescrollt werden. Ich habe dazu das ItemsContorl in einen ScrollViewer gepackt und den ManipulationMode auf Control gesetzt damit ich in "echtzeit" an den vertikalen offset komme. Allerdings führt das dazu das der Scroll-Vorgang nicht mehr "schön" (smooth) ist. Daher frage ich mich ob es auch irgendwie anders möglich ist zu erfahren ob ein Item gerade in Sicht gescrollt wird oder nicht.

Plattform ist WP8.

Keiner eine Idee??

02.05.2013 - 16:43 Uhr

Hallo, ich frage mich gerade ob es einen Selector für Eigenschaften gibt? Ich würde zb gerne (wie so häufig) den Vordergrund meines Controls an einen Boolschen wert ausrichten möchte aber nicht jedesmal einen ValueConverter schreiben müssen.

Um mal zu verdeutlichen was ich meine hier ein stück code wie die Nutzung aussehen würde/könnte/sollte.



<TextBlock Text="Test">
	<TextBlock.Foreground>
		<BoolSelector Content="{Binding IsInCurrentMonth}">
			<BoolSelector.True>
				<BoolSelector Content="{Binding IsToday}">
					<BoolSelector.True>        
						<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
							<GradientStop Color="Black" Offset="0" />
							<GradientStop Color="White" Offset="1" />
						</LinearGradientBrush>           
					</BoolSelector.True>
					<BoolSelector.False>
						<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
							<GradientStop Color="Black" Offset="0" />
							<GradientStop Color="White" Offset="1" />
						</LinearGradientBrush>           								
					</BoolSelector.False>
				</BoolSelector>
			</BoolSelector.True>
			<BoolSelector.False>
				<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
					<GradientStop Color="Black" Offset="0" />
					<GradientStop Color="White" Offset="1" />
				</LinearGradientBrush>           
			</BoolSelector.False>
		</BoolSelector>
	</TextBlock.Foreground>
</TextBlock>


25.02.2013 - 13:51 Uhr

Hallo,

ich bin gerade dabei ein nine patch control für windows phone 8 zu schreiben.
ich hab mich für das folgende controltemplate entscheiden:


                <ControlTemplate TargetType="local:NinePatch">
                    <Border Name="BorderContainer">
                        <Grid Name="GridContainer" >
                            <Image Name="Image01" />
                            <Image Name="Image02" />
                            <Image Name="Image03" />
                            <Image Name="Image04" />
                            <Image Name="Image05" />
                            <Image Name="Image06" />
                            <Image Name="Image07" />
                            <Image Name="Image08" />
                            <Image Name="Image09" />
                            <Border Name="BorderContentContainer"/>
                        </Grid>
                    </Border>
                </ControlTemplate>

die bilder werden innerhalb des GridContainer via column/row positioniert und gestrecht. der BorderContentContainer.Child property wird die ContentProperty für NinePatch zugewiesen. der BorderContentContainer erhält auch noch ein Margin das von dem .9patch-bild bestimmt wird.

Das NinePatch control sollte sich nun eigentlich anhand der größe des Inhalts vom BorderContentContainer ausrichten das passiert aber nicht. Das Control wird immer unerklärbar groß. Wenn ich jetzt aber anfange MeasureOverride und/oder ArrangeOverride zu nutzen verstehe ich überhaupt nicht mehr was passiert.

ein bild davon ist im anhang.

und hier mal die overrides die ich nutze:

    
        protected override Size ArrangeOverride(Size finalSize)
        {
            double newWidth, newHeight;
            newWidth = _borderContentContainer.ActualWidth + _contentMargin.Left + _contentMargin.Right;
            newHeight = _borderContentContainer.ActualHeight + _contentMargin.Top + _contentMargin.Bottom;

            newWidth = newWidth < _minSize.Width ? _minSize.Width : newWidth;
            newHeight = newHeight < _minSize.Height ? _minSize.Height : newHeight;
            return new Size(newWidth, newHeight);
        } 

        protected override Size MeasureOverride(Size availableSize)
        {
            Size contentSize = availableSize;
            contentSize.Width -= _contentMargin.Left + _contentMargin.Right;
            contentSize.Height -= _contentMargin.Top + _contentMargin.Bottom;

            //_borderContentContainer.Measure(contentSize);
            //_gridContainer.Measure(availableSize);


            double newWidth, newHeight;
            newWidth = _borderContentContainer.ActualWidth + _contentMargin.Left + _contentMargin.Right;
            newHeight = _borderContentContainer.ActualHeight + _contentMargin.Top + _contentMargin.Bottom;

            newWidth = newWidth < _minSize.Width ? _minSize.Width : newWidth;
            newHeight = newHeight < _minSize.Height ? _minSize.Height : newHeight;
            return new Size(newWidth, newHeight);
        }

Kann mir jemand eventuell helfen zu verstehen wie ich die overrides zu verwenden habe damit die größe des controls sich dem inhalt anpasst?

Ok ich glaube ich bin der unerklärlichen höhe des elements auf die schliche gekommen... das bild Image05 liegt in dem GridContainer auf col 1 row 1 die jeweils mit breite/höhe 1* ausgewiesen sind... was dazu führt das ein 5*7 pixel Image auf 259pixel vergrößert wird... ohne Grund.

**++:::

01.05.2012 - 13:26 Uhr

Hi,

ich versuche mich zu Zeit ein bisschen in WPF verstehe aber gerade nicht so ganz warum mein Element sich so seltsam verhält, bzw. scheine ich nicht richtig zu verstehen wie die DoubleAnimation funktioniert. Was ich erreichen möchte ist, das sich mein element immer wieder von seiner aktuellen Position Richtung Maus auf der Y Achse bewegt. Allerdings scheint das nicht so ganz zu klappen 😉 vllt kann mich hier jemand in die richtige Richtung schubsen?



        Point s = new Point();
        private void Window_MouseMove(object sender, MouseEventArgs e)
        {
            Point p = e.GetPosition(this);

            if (p != s)
            {
                imgCenter.MoveY(this, p.Y - imgCenter.Height / 2);
            }
        }
        public static void MoveY(this Image target, UIElement rel, double newY)
        {
            Point p = target.TranslatePoint(new Point(0, 0), rel);
            double top = p.Y;
            TranslateTransform trans = new TranslateTransform();
            target.RenderTransform = trans;
            DoubleAnimation anim = new DoubleAnimation(top, newY, TimeSpan.FromSeconds(2));
            trans.BeginAnimation(TranslateTransform.YProperty, anim);
        }    

18.11.2011 - 17:07 Uhr

also der stackoverflow tritt wirklich nur innerhalb der framework-methode auf. was soll auch innerhalb der OnClipboardChange()-methode einen stackoverflow verursachen...
diese zeilen:


                GetWindowThreadProcessId(GetClipboardOwner(), out pid);
                cpid = GetCurrentProcessId();

                if (pid != cpid)
                    OnClipboardChange();

verhindern ja schon das der ausführende prozess OnClipboardChange() aufruft. das problem bleibt weiterhin das einige programme windows dazu bringen WM_DRAWCLIPBOARD zweimal auszuspucken. in einigen artikeln wird beschrieben das die FALSCHE nutzung des clipboards dazu führt aber wenn schon das .NET Framework diesen fehler produziert dann denk ich das es tiefere gründe hat, oder die bei ms kiffen tatsächlich. ^^

18.11.2011 - 16:39 Uhr

besteht ein Unterschied zwischen Vlc Player als Standalone und dem C# Vlc Plugin ,(andere Konfiguration, Buffering,..)?

evtl erkennt VLC ja das dein "minipc" nicht ausreicht um HD flüssig wiederzugeben und komprimiert das video vor der ausgabe? ist nur so eine idee.

18.11.2011 - 16:33 Uhr

sry war auf ner tagung unterwegs hatte kaum zeit..
achso, ja gut jetzt hats klick gemacht... das werd ich mal versuchen, danke ^^

10.11.2011 - 18:53 Uhr

Huhu,

Ich hab für meine Appbar einen ClipboardViewer geschrieben er ermöglicht das Zwischenspeichern und wiederaufrufen von Clipboardeinträgen (Bilder, Text, Dateien, etc..). Nun hab ich zwei Probleme:

  1. Wenn ich per SetData() daten ins Clipboard schreibe wird WM_DRAWCLIPBOARD 2mal vom System ausgegeben. Auch wenn ich z.B. im Firefox Text kopiere, jedoch nicht wenn ich in Notepad Text kopiere. Einige Seiten im Internet behaupten das durch eine falsche Verwendung der Clipboard API dieser Fehler auftritt. Nun mach ich aber doch eigentlich nichts falsch in der SetData() Methode, oder? Und NEIN innerhalb des Programms wir die Methode NICHT 2mal aufgerufen!

  2. Ab und an nach gewisser Laufzeit schmiert OnClipboardChange() mit einem Stackoverflow Error ab. Das kann ich mir absolut nicht erklären. Je nachdem welchen Inhalt man gerade kopiert hat (von einem anderen Programm aus) z.B. Text tritt der Stackoverflow innerhalb der Funktion (in dem Fall) Clipboard.ContainsText() auf.

Weis hier jemand evtl. rat?

Hier die Klasse:


    /// <summary>
    /// Clipboardformate.
    /// </summary>
    public enum CBDataType
    {
        /// <summary>
        /// Nicht untersüztes Clipboardformat
        /// </summary>
        Unsupported,
        
        /// <summary>
        /// Daten im Filelist-Format vorhanden.
        /// </summary>
        Files,

        /// <summary>
        /// Format im Audio-Format vorhanden.
        /// </summary>
        Audio,

        /// <summary>
        /// Format im Image-Format vorhanden.
        /// </summary>
        Image,

        /// <summary>
        /// Format im Text-Format vorhanden.
        /// </summary>
        Text,
    }

    public delegate void ClipboardWatcherOnChangeEventHandler(CBDataType type, object data);

    public class ClipboardWatcher
    {
        #region WIN API
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
        [DllImport("user32.dll")]
        public static extern bool ChangeClipboardChain(IntPtr hWndRemove, IntPtr hWndNewNext);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
        [DllImport("user32.dll")]
        static extern IntPtr GetClipboardOwner();
        [DllImport("user32.dll")]
        private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
        [DllImport("kernel32.dll")]
        static extern uint GetCurrentProcessId();
        private const UInt32 WM_CHANGECBCHAIN       = 0x030D;
        private const UInt32 WM_DRAWCLIPBOARD       = 0x0308;
        private const UInt32 WM_CLOSE               = 0x0010;
        private const UInt32 WM_DESTROY             = 0x0002;
        #endregion

        private static bool _instance = false;
        private IntPtr _nextCBWatcher;
        private IntPtr _ownerWnd;
        private bool _wasReset;

        public event ClipboardWatcherOnChangeEventHandler ClipboardChange;
        
        public ClipboardWatcher(IntPtr OwnerWnd) 
        {
            ClipboardChange = null;
            _nextCBWatcher = IntPtr.Zero;
            _ownerWnd = OwnerWnd;
            _nextCBWatcher = SetClipboardViewer(_ownerWnd);

            if (_instance) throw new Exception("Only one instance at a time. TODO: Check SetData() triggering twice our MessageProc...");

            _instance = true;
            _wasReset = false;
        }

        public static void SetData(CBDataType type, object data) 
        {
            object dat;
            switch (type)
            {
                case CBDataType.Files:
                    dat = data as StringCollection;
                    if (dat == null) throw new Exception("Invalid data.");
                    Clipboard.SetFileDropList((StringCollection)dat);
                    break;

                case CBDataType.Audio:
                    dat = data as Stream;
                    if (dat == null) throw new Exception("Invalid data.");
                    Clipboard.SetAudio((Stream)dat);
                    break;

                case CBDataType.Image:
                    dat = data as Image;
                    if (dat == null) throw new Exception("Invalid data.");
                    Clipboard.SetImage((Image)dat);
                    break;

                case CBDataType.Text:
                    dat = data as string;
                    if (dat == null) throw new Exception("Invalid data.");
                    Clipboard.SetText((string)dat);
                    break;

                default: throw new Exception("Unsupported Clipboardformat.");
            }

        }

        public void SetClipboardViewer()
        {
            _wasReset = true;
            ChangeClipboardChain(_ownerWnd, _nextCBWatcher);
            _nextCBWatcher = SetClipboardViewer(_ownerWnd);
        }

        public void MessageProc(ref Message m) 
        {
            if (m.Msg == WM_CHANGECBCHAIN)
            {
                if (m.WParam == _nextCBWatcher)
                {
                    _nextCBWatcher = m.LParam;
                }
                else
                {
                    SendMessage(_nextCBWatcher, m.Msg, m.WParam, m.LParam);
                }
            }
            else if (m.Msg == WM_DRAWCLIPBOARD)
            {
                uint cpid = 0, pid = 0;

                if (_wasReset)
                {
                    _wasReset = false;
                    return;
                }
                
                GetWindowThreadProcessId(GetClipboardOwner(), out pid);
                cpid = GetCurrentProcessId();

                if (pid != cpid)
                    OnClipboardChange();

                if (_nextCBWatcher != IntPtr.Zero)
                    SendMessage(_nextCBWatcher, m.Msg, m.WParam, m.LParam);
            }
            else if (m.Msg == WM_DESTROY)
            {
                ChangeClipboardChain(_ownerWnd, _nextCBWatcher);
            }
        }

        protected virtual void OnClipboardChange() 
        {
            object obj = null;
            CBDataType objType = CBDataType.Unsupported;

            if (Clipboard.ContainsFileDropList())
            {
                obj = Clipboard.GetFileDropList();
                objType = CBDataType.Files;
            }
            else if (Clipboard.ContainsAudio())
            {
                obj = Clipboard.GetAudioStream();
                objType = CBDataType.Audio;
            }
            else if (Clipboard.ContainsImage())
            {
                obj = Clipboard.GetImage();
                objType = CBDataType.Image;
            }
            else if (Clipboard.ContainsText())
            {
                obj = Clipboard.GetText();
                objType = CBDataType.Text;
            }
            else
                obj = Clipboard.GetDataObject();

            Control ctrl = ClipboardChange.Target as Control;
            if (ClipboardChange != null)
            {
                if (ctrl != null && ctrl.InvokeRequired)
                    ClipboardChange.Invoke(objType, obj);
                else
                    ClipboardChange(objType, obj);
            }
        }
    }

10.11.2011 - 18:19 Uhr

Die OnDrawItem methode Zeichnet ausschließlich zwischengespeicherte Bilder.

-->

if (selected)
    dc.DrawImage(selectedImages[idx])
else
    dc.DrawImage(itemImages[idx])

nichts anderes wird in der OnDrawItem methode getan. 😃

versteh auch nicht ganz was der link mir bringen soll sry ^^

27.10.2011 - 23:20 Uhr

wie geschrieben; sind die items der listbox gecached im ondrawitem werden nurnoch 2 bilder (1 selection) gezeichnet..

27.10.2011 - 20:59 Uhr

Der Thread hat mich auch nicht weiter gebracht. Hab nun für die Items einen cache angelegt das verbessert das flackern ein wenig aber entfernt es auch nicht komplett.

27.10.2011 - 02:34 Uhr

Hallo,

ich hatte mich einige zeit zur Ruhe gesetzt und bin wieder ein bisschen am Programmieren 😉 zu meinem Problem:

jedesmal wenn ich in meiner ListBox ein Item abwähle, sprich wenn ich ein anderes Item neu Selektiere, flackert das abgewählte item. Ich hab echt alles versucht überall rum gegooglet aber ich habe keine Ahnung was da passiert und warum es flackert. 😦

Wen es interessiert hier mal ein Bld vom Projekt (und der ListBox): siehe Anhang

Hier mal der code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using DrawingEx;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace substx
{
    class DesignListBox : ListBox
    {
        public DesignListBox()
        {
            base.SetStyle(ControlStyles.OptimizedDoubleBuffer |
                          ControlStyles.ResizeRedraw |
                          ControlStyles.AllPaintingInWmPaint,
                          true);

            // DoubleBuffered = true; <-- nutzt auch nix WAH!!!
            base.DrawMode = DrawMode.OwnerDrawFixed;
        }

        protected override void OnDrawItem(DrawItemEventArgs e)
        {

            Rectangle bnd = e.Bounds;
            Graphics dc = e.Graphics;
            ColorTable ct = (ColorTable)Items[e.Index];
            int pad = 6;
            int pwh = bnd.Height - 2 * pad;
            Rectangle pi0 = new Rectangle(bnd.X + pad, bnd.Y + pad, pwh, pwh);
            Rectangle pi1 = new Rectangle(bnd.X + pi0.Right + pad, bnd.Y + pad, pwh, pwh);
            Rectangle pi2 = new Rectangle(bnd.X + pi1.Right + pad, bnd.Y + pad, pwh, pwh);
            Rectangle pi3 = new Rectangle(bnd.X + pi2.Right + pad, bnd.Y + pad, pwh, pwh);

            if (ct == null)
            {
                #region Error
                dc.FillRectangle(new SolidBrush(BackColor), bnd);
                StringFormat sf = new StringFormat();
                sf.LineAlignment = StringAlignment.Center;
                sf.Alignment = StringAlignment.Center;
                dc.DrawString("Error Item.", Font, new SolidBrush(Color.Red), bnd, sf);
                #endregion
            }
            else
            {
                #region Preview
                dc.SetColorTableWindowsVista(ct);
                dc.FillRectangle(new SolidBrush(ct.Background), bnd);
                dc.DrawVistaButtonBackground(pi0, 2, true, false, false);
                dc.DrawVistaButtonBackground(pi1, 2, true, true, false);
                dc.DrawVistaButtonBackground(pi2, 2, true, false, true);
                dc.DrawVistaButtonBackground(pi3, 2, true, true, true);

                Rectangle capt = bnd; capt.X += 8; capt.Width -= 8;
                StringFormat sf = new StringFormat();
                sf.LineAlignment = StringAlignment.Center;
                dc.DrawString(ct.Name + ((ct == Design.ColorTable) ? " (Aktiv)" : ""), Font, new SolidBrush(ct.Text), capt, sf);
                #endregion
            }

            if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                #region Selection
                Rectangle sel = bnd;
                Rectangle selhalf;
                Color selcl = Color.CornflowerBlue;

                sel.Inflate(-2, -2);
                using (GraphicsPath psel = RoundedRectangle.Create(sel, 2))
                {
                    using (Pen selouter = new Pen(Color.FromArgb(75, selcl)))
                    {
                        dc.DrawPath(selouter, psel);
                    }
                }
                sel.Inflate(-1, -1);
                selhalf = sel;
                selhalf.Height /= 2;
                using (GraphicsPath psel = RoundedRectangle.Create(selhalf, 2,
                    RoundedRectangle.RectangleCorners.TopLeft &
                    RoundedRectangle.RectangleCorners.TopRight))
                {
                    selhalf.Height++;
                    using (LinearGradientBrush lgb = new LinearGradientBrush(
                        selhalf, Color.FromArgb(150, selcl), Color.Transparent, 90f))
                    {
                        dc.FillPath(lgb, psel);
                    }
                }
                using (GraphicsPath psel = RoundedRectangle.Create(sel, 2))
                using (Pen selinner = new Pen(Color.FromArgb(150, selcl)))
                {
                    dc.DrawPath(selinner, psel);
                }
                #endregion
            }
        }
    }
}



27.10.2011 - 02:04 Uhr

falls dich das interessieren sollte: http://www.un4seen.com/ super audio libs haben die da u.a. auch streaming usw. möglich.. recht einfach und übersichtlich das ganze. allerdings glaub ich audio only

25.06.2010 - 17:47 Uhr

Ein bisschen schon 😃

Diese Nodes sind alle OwnerDrawn (geht aus dem code hervor) und sollen sich auch möglichst in "echtzeit" an den inhalt des programms anpassen... um also eine Statusänderung einer Node anzuzeigen sollte auch nur eine Node neu gezeichnet werden und nicht der ganze sichtbare bereich..

btw: bisher läuft es ohne probleme...

09.06.2010 - 19:27 Uhr

Hallo ich hab hier mal eine Lösung wie man eine einzige TreeNode in einem TreeView aktualisieren kann. Ich frag mich jetzt obs da einen besseren weg gibt.

was ich an dem punkt nicht verstehe ist das die anzeige nach ausführen von UpdateSingleNode auch tatsächlich sofort aktualisiert ist! Irgentwie hab ich immer gedacht man müsste dem control bzw win explizit mitteilen das sich was geändert hat?!



        const int TV_FIRST = 0x1100;
        const int TVM_GETITEMRECT = (TV_FIRST + 4);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
        private void UpdateSingleNode(TreeNode node)
        {
            if (node.IsVisible)
            {

                RECT rc;
                unsafe
                {
                    *(void**)&rc = node.Handle.ToPointer();
                    SendMessage(Handle, TVM_GETITEMRECT, IntPtr.Zero, new IntPtr(&rc));
                }

                // dc der treeview holen
                using (Graphics dc = Graphics.FromHwnd(Handle))
                {
                    // erstelle set mit atm verarbeiteten states
                    TreeNodeStates states = TreeNodeStates.Default;
                    states |= node.IsSelected ? TreeNodeStates.Selected : TreeNodeStates.Default;

                    // sende ondrawnode 
                    OnDrawNode(new DrawTreeNodeEventArgs(dc, node, rc.ToRectangle(), states));
                }
            }
        }




        [StructLayout(LayoutKind.Sequential)]
        public struct RECT
        {
            int _left;
            int _top;
            int _right;
            int _bottom;

            public RECT(global::System.Drawing.Rectangle rectangle)
                : this(rectangle.Left, rectangle.Top, rectangle.Right, rectangle.Bottom)
            {
            }
            public RECT(int left, int top, int right, int bottom)
            {
                _left = left;
                _top = top;
                _right = right;
                _bottom = bottom;
            }

            public int X
            {
                get { return Left; }
                set { Left = value; }
            }
            public int Y
            {
                get { return Top; }
                set { Top = value; }
            }
            public int Left
            {
                get { return _left; }
                set { _left = value; }
            }
            public int Top
            {
                get { return _top; }
                set { _top = value; }
            }
            public int Right
            {
                get { return _right; }
                set { _right = value; }
            }
            public int Bottom
            {
                get { return _bottom; }
                set { _bottom = value; }
            }
            public int Height
            {
                get { return Bottom - Top; }
                set { Bottom = value - Top; }
            }
            public int Width
            {
                get { return Right - Left; }
                set { Right = value + Left; }
            }
            public global::System.Drawing.Point Location
            {
                get { return new global::System.Drawing.Point(Left, Top); }
                set
                {
                    Left = value.X;
                    Top = value.Y;
                }
            }
            public global::System.Drawing.Size Size
            {
                get { return new global::System.Drawing.Size(Width, Height); }
                set
                {
                    Right = value.Width + Left;
                    Bottom = value.Height + Top;
                }
            }

            public global::System.Drawing.Rectangle ToRectangle()
            {
                return new global::System.Drawing.Rectangle(this.Left, this.Top, this.Width, this.Height);
            }
            public static global::System.Drawing.Rectangle ToRectangle(RECT Rectangle)
            {
                return Rectangle.ToRectangle();
            }
            public static RECT FromRectangle(global::System.Drawing.Rectangle Rectangle)
            {
                return new RECT(Rectangle.Left, Rectangle.Top, Rectangle.Right, Rectangle.Bottom);
            }

        }






13.04.2010 - 02:21 Uhr

Okay war bissl blöd hab doch ne doku gefunden und schnell selbst was gebastelt für meine zwecke reichts:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO;
using System.Drawing;

namespace GamesVerwaltung
{
    class MultiIcon
    {
        private struct TIconHeader
        {
            public short res0;
            public short imgtype;
            public short imgcount;
        }
        private struct TIconData
        {
            public byte width;
            public byte height;
            public byte clcount;
            public byte res0;
            public short clplanes;
            public short bpp;
            public int imglen;
            public int imgadr;
        }

        private Bitmap[] bitmaps;
        private TIconData[] icondata;
        private TIconHeader iconheader;

        public MultiIcon()
        {
            bitmaps = new Bitmap[6];
            icondata = new TIconData[6];

            iconheader = new TIconHeader();
            iconheader.imgcount = 6;
            iconheader.imgtype = 1;
            iconheader.res0 = 0;
        }

        private void setImage(int idx, Bitmap bmp)
        {
            bitmaps[idx] = bmp;

            icondata[idx].bpp = 32;
            icondata[idx].clcount = 0;
            icondata[idx].clplanes = 0;
            icondata[idx].height = (byte)(bmp.Height == 256 ? 0 : bmp.Height);
            icondata[idx].width = (byte)(bmp.Width == 256 ? 0 : bmp.Width);
            icondata[idx].res0 = 0;
            icondata[idx].imgadr = -1;
            icondata[idx].imglen = -1;
        }

        public void SetAll(Image img)
        {
            setImage(0, createHighRes(img, 16, 16));
            setImage(1, createHighRes(img, 24, 24));
            setImage(2, createHighRes(img, 32, 32));
            setImage(3, createHighRes(img, 48, 48));
            setImage(4, createHighRes(img, 128, 128));
            setImage(5, createHighRes(img, 256, 256));
        }

        public void Save(string file)
        {
            FileStream fstr = new FileStream(file, FileMode.Create, FileAccess.Write);
            writeIcon(fstr);
            fstr.Close();
            fstr.Dispose();
        }

        private void writeIcon(Stream str)
        {
            BinaryWriter bw = new BinaryWriter(str);

            bw.Write(iconheader.res0);
            bw.Write(iconheader.imgtype);
            bw.Write(iconheader.imgcount);

            int offset = 6 /*ANZAHL DER BILDER*/ * 16 /*BYTEGRÖßE ICONHEADER*/;
            int iconheader0offset = (int)str.Position;
            str.Position += offset;

            for (int i = 0; i < 6; i++)
            {
                Bitmap bmp = bitmaps[i];

                //MemoryStream mstr = new MemoryStream();
                icondata[i].imgadr = (int)str.Position;
                bmp.Save(str, System.Drawing.Imaging.ImageFormat.Png);
                icondata[i].imglen = (int)(str.Position - icondata[i].imgadr);
            }

            str.Position = iconheader0offset;

            for (int i = 0; i < 6; i++)
            {
                TIconData idat = icondata[i];
                /*
                    0 	1 	Specifies image width in pixels. Can be 0, 255 or a number between 0 to 255. Should be 0 if image width is 256 pixels.
                    1 	1 	Specifies image height in pixels. Can be 0, 255 or a number between 0 to 255. Should be 0 if image height is 256 pixels.
                    2 	1 	Specifies number of colors in the color palette. Should be 0 if the image is truecolor.
                    3 	1 	Reserved. Should be 0.[Notes 1]
                    4 	2 	In .ICO format: Specifies color planes. Should be 0 or 1.[Notes 2]
                    6 	2 	In .ICO format: Specifies bits per pixel. [Notes 3]
                    8 	4 	Specifies the size of the bitmap data in bytes
                    12 	4 	Specifies the offset of bitmap data address in the file
                */
                bw.Write(idat.width);
                bw.Write(idat.height);
                bw.Write(idat.clcount);
                bw.Write(idat.res0);
                bw.Write(idat.clplanes);
                bw.Write(idat.bpp);
                bw.Write(idat.imglen);
                bw.Write(idat.imgadr);
            }
        }

        private Bitmap createHighRes(Image img, int w, int h)
        {
            Bitmap bmp = new Bitmap(w, h);

            Graphics dc = Graphics.FromImage(bmp);
            dc.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            dc.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            dc.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            dc.DrawImage(img, 0, 0, w, h);
            dc.Dispose();

            return bmp;
        }
    }
}


13.04.2010 - 00:06 Uhr

Huhu,

Ab Win Vista (oder schon eher??) unterstützt der Windows-Explorer ja dieses neue Iconformat (256x256 PNG Compressed Icons). Nun wollte ich wissen ob jemand guten Code kennt der solche Icons erstellt? Eine Doku für das Dateiformat damit ich selbst "handanlegen" kann wär auch okay. Irgendwie find ich nix. 😃

Danke schonmal.

11.03.2010 - 14:17 Uhr

gut gemacht @golo 😃

interessant, wie oft herbivore in dem beitrag auftaucht 😄 (zu recht aber dennoch interessant)

wer 40k postings in 5 Jahren macht soll wohl nicht unbemerkt bleiben... 😄

finde aber auch das es ein gut geführtes interview ist!

11.03.2010 - 13:51 Uhr

Ja klasse!! Bin ich auch gerade drüber gestolpert hab mir das Kostenlose EBook "Android Grundlagen und Programmierung" über heise developer geladen... da les ich da auf dem index myCSharp... da hab ich mir gedacht das kennste doch? ^^

Erstmal recht herzlichen Glückwunsch dazu!! 👍

EDIT:

Know-how 11.03.2010 - 13:36
Schade, leider 1 Minute zu früh veröffentlicht 😄){gray}

das is doch absicht oder??? :evil:

16.02.2010 - 09:22 Uhr

Hey,

hab ich überhaupt schonmal erwähnt wie überaus hilfreich und informativ dieses Forum ist? Die moderation hier ist super, die Leute immer sachlich und es wird geholfen. Eigentlich alles was man von so einem Forum erwartet wird hier bestens erfüllt. Darum sag ich einfach mal: Danke. 👍

15.02.2010 - 13:44 Uhr

Ist dieser Schlüssel eindeutig?
Finde ich den auch auf anderen Systemen?

Ja eindeutig wird er sein. Auf meinem Win7 ist der Schlüssel nicht vorhanden.

15.02.2010 - 13:10 Uhr

Sieht aus wie eine GUID versuch die doch mal in deiner Registry aufzulösen.

14.02.2010 - 23:58 Uhr

ja war auch ein bisschen unglücklich die wortwahl. Den ersten schritt den ich jetzt gemacht habe ist die fps-rate zu errechnen. Nun muss ich nur noch beim unterschreiten der fps die geschwindigkeit des scrollens anpassen da hakts aber noch ein bisschen. Release den pbv aber erstmal ohne dieses feature da das doch mehr gehirnschmalz erfordert. hab ich das feature erstmal in ein eigenes projekt gekapselt.

14.02.2010 - 00:52 Uhr

Hm. Das man schnellst möglich ankommen möchte ist ein gutes argument. Picasa kann das aber auch ziemlich flott hängt aber auch bestimmt nicht an der GDI+ 😕. Ist vllt auch etwas hoch gegriffen. Nur hätt ja sein könn das sich da jemand schonmal gedanken drüber gemacht hat wär ziemlich informativ. Werd dann wohl mal bissl Pionierarbeit leisten. Lass euch das aber wissen wenn ich was brauchbares erreiche ^^

13.02.2010 - 17:55 Uhr

hat da jemand nen kleinen denkanstoß für mich? lieg gerad irgentwie auf dem trockenen 😕

man kann ja noch so performanten code haben wie man will iwann fängts immer an zu ruckeln ich bin z.Z. an einem Photoshop Brush Viewer (80% rdy 😃) und wenn ich unter voller auflösung ca. 10x9 brushes darstelle (ist auch alles gecached und so keine frage) fängts halt an zu ruckeln beim scrollen. Nun möcht ich wissen ob sich darüber schonmal jemand gedanken gemacht hat wie man ermitteln kann wann man die echtzeit verlässt um so z.B. zu schnelles scrollen zu unterdrücken.

sagt man das so? echtzeit verlassen? hört sich jetzt iwie nach marty und dem doc an 😉

11.02.2010 - 14:40 Uhr

hö? wieso geht das denn dann nicht? 😕

[EDIT] aha. nu klappts. ich hab die var-typen von uint nach long umgestellt. GetWindowLong() liefert bei mir einen negativen wert den ich nun negiert habe. keine ahnung warum da ein negativer wert rumkommt...

11.02.2010 - 14:32 Uhr

Öhm ja, die SysListView32 hat halt den Style WS_CHILDWINDOW. Alle Fenster mit diesem stil brauchen logischerweise erst garnicht geprüft werden weil die sich nicht unter die Appbar schieben können.

Doch da gibts jetzt auch schon direkt ein neues Problem:


uint wstyle = (uint)Win32.User32Api.GetWindowLong(hWin, Win32.User32Api.GWL_STYLE);
const uint ws_child = 0x40000000;
if ((ws_child & wstyle) == ws_child)
    return;

greift nicht obwohl hWin 100%ig den WS_CHILDWINDOW hat... so fragt man die bitmaske doch ab oder? :>

11.02.2010 - 11:09 Uhr

Also hier mal ein denk anstoß:

  1. Die Seiten müssten erstmal als Form erstellt werden. Programm intern musst du diese Form's dann erzeugen und den Parent auf das Handle des TabPanel setzen. Wenn das klappt sollte die Seite innerhalb des Tabs als Fenster erscheinen. Dann kannst du noch die Border der Form anpassen so das sie nicht mehr als Form zu erkennen ist.

  2. Nun musst du nur noch den Drag&Drop mechanismus entwerfen der das in 1. beschriebene vorgehen automatisiert. (in beide Richtungen)

11.02.2010 - 10:57 Uhr

Scheint Irgentwie nicht mehr möglich zu sein (Win7) über Progman an das Handle der SysListView32 zu kommen (ich mein das Handle der Desktop-ListView) die ist nun in einem der no-title WorkerW-Class Fenster. Wie komm ich denn jetzt sicher an das Handle???

Ich hab eine Appbar die vermeiden soll das sich ein Fenster "ungreifbar" hinter sie schiebt. Das löse ich z.Z. mit GetForegroundWindow(). Das Problem dabei ist das mit einem click auf den Desktop dieser sich auch verschiebt 😕 . Kann man evtl iwie auf ein "echtes" Fenster Prüfen? So das diese SysListView einfach aus dem Raster fällt?

[EDIT] omg... GetWindowsLong() und WS_CHILDWINDOW... andenkopfklatsch

10.02.2010 - 12:35 Uhr

ja, hast ja recht. darf auch mal passieren 😮) sind doch immer erst die anderen schuld ^^

10.02.2010 - 12:14 Uhr

rein formal... das ist einfach nur irreführend. ich find da sollte explizit drauf hingewiesen werden. nunja bleibt wohl nix anderes übrig als ab zu fangen. 😕

10.02.2010 - 11:58 Uhr

Huhu,

laut MSDN

searchPattern contains invalid characters. To determine invalid characters, use the GetInvalidPathChars method.

soll man die GetInvalidPathChars methode nehmen um ungülitige Zeichen im pattern zu erkennen. klappt aber nicht. '&#39; ist ein ungültiges char kommt aber nicht in dem char array vor was GetInvalidPathChars zurück gibt. -.-* Is schon iwie klar aber warum steht das so in der doku? bzw wie komm ich denn jetzt an die richtigen illegalen? ^^


                char[] invalidPathChars = Path.GetInvalidPathChars();
                foreach(var fmask in fmasks)
                {
                    if (fmask.IndexOfAny(invalidPathChars) > -1)
                        throw new Exception(string.Format("Die Dateimaske [{0}] ist ungültig.", fmask));
                }

08.02.2010 - 13:48 Uhr

ne brauch kein visuelles iface da werden nur daten ausgegeben die von unserem programm verarbeitet werden. sprich das skript wird nicht von einem normalen browser aufgerufen aber mit diesem debuggt... das problem bei der ganzen sache ist wie will man sonst so ca. 500.000 datensätze in mysql reinbekommen? von ner direkten verbindung kann man absehen da mysql nicht bei jedem host von "außen" erreichbar ist. Zerstückeln und per refresh wäre ne idee wenn die verbindung zum script nicht verloren gehen würde...

@der-schlingel: firefox hat diese config garnicht mehr ^^

08.02.2010 - 12:54 Uhr

Huhu leute,

ich arbeite gerade an einem Importscript in PHP.. die max execution time wird immer neu gesetzt auch läuft php nicht im safe mode. Da das script dennoch einfach aufhört zu laufen und das ohne fehler gehe ich stark in annahme das ff auch sowas wie eine max run zeit beim downloaden von seiten hat... kann das wer bestätigen? bzw sagen was ich wo einstellen kann?

01.02.2010 - 17:01 Uhr

Halte ich nun die RFID an den Leser, welcher am COM2 angeschlossen ist erscheint folgendes in der richTextBox: ö~öwö wobei das "ö" durch so ein rechteckiges kästchen zu ersetzen ist.

Sowas geschieht wenn du Werte anzeigen lassen willst, für die keine Zeichen in der Schriftart hinterlegt sind. Du solltest die ankommenden Daten erstmal in hexadezimalcode umwandeln und diesen dann ausgeben.

01.02.2010 - 10:22 Uhr

Könntest auch das Programm Synchron in einem von dir gestarteten Thread ausführen. Dann hättest du die Möglichkeit auf das beenden zu warten. Die frage ist dann nur wie oft dieser Aufruf gleichzeitig ausgeführt wird... weil unmengen an Threads sollte man vermeiden. ^^

27.01.2010 - 14:54 Uhr

Ich hab mir mal das Angebot angeschaut. Scheint recht interessant zu sein. Es werden auch E-Learning-Kurse für diese Zertifizierung angeboten wäre sicherlich von Vorteil diese zu absolvieren...
Ansonsten würd ich sagen das das schwer einzuschätzen ist ob du das schaffst oder nicht.

26.01.2010 - 14:59 Uhr

Oh, ja natürlich! Komisch bei mir Daheim ist der Code richtig k.A. was passiert ist ^^

06.01.2010 - 16:05 Uhr

Hallo!

Ich hab mal eine ganz banale frage: Wie nennt man eine Textdatei mit festen Feldlängen?

Schreibe gerade meinen Projektantrag und "XML, CSV und Textdatei mit festen Feldlängen" sieht iwie so blöd aus...

23.12.2009 - 11:33 Uhr

Beschreibung:

Ich brauchte sowas in versch. Projekten deswegen hab ich mich mal dazu bewegen lassen endlich eine kleine Klasse zu schreiben... ist jetzt nichts bahnbrechendes aber kann ja sein das es jmnd braucht.


using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
using System.Threading;

namespace NetworkStats
{
    /// <summary>
    /// Simple speed observing logic for NetworkInterfaces.
    /// </summary>
    public class SpeedMeter : IDisposable
    {
        private Timer tUpdate;
        private int _maxbacklog;
        private int _updateintervall;
        private NetworkInterface _adapter;
        private IPv4InterfaceStatistics _stats;
        private bool _enabled;

        // Backlogs
        private List<long> log_bytesDown;
        private List<long> log_bytesUp;

        /// <summary>
        /// Get the observered NetworkInterface.
        /// </summary>
        public NetworkInterface Adapter { get { return _adapter; } }
        /// <summary>
        /// SpeedMeter will call this event periodically depending on the UpdateIntervall.
        /// </summary>
        public event EventHandler Updated = null;
        /// <summary>
        /// Get the calculated Downloadspeed @ bytes per seconds.
        /// </summary>
        public float DownloadSpeed { get; private set; }
        /// <summary>
        /// Get the calculated Uploadspeed @ bytes per seconds.
        /// </summary>
        public float UploadSpeed { get; private set; }
        /// <summary>
        /// Get or Set the maximum number of backlogs to calculate the average speeds.
        /// </summary>
        public int MaximumBacklog 
        {
            get { return _maxbacklog; }
            set
            {
                _reset();
                _maxbacklog = value;
            }
        }
        /// <summary>
        /// Get or Set the time in milliseconds to wait until a new update.
        /// </summary>
        public int UpdateIntervall
        {
            get { return _updateintervall; }
            set
            {
                _updateintervall = value;
                _reset();
                tUpdate.Change(0, _updateintervall);
            }
        }
        /// <summary>
        /// Enable / Disable this instance of SpeedMeter.
        /// </summary>
        public bool Enabled
        {
            get { return _enabled; }
            set
            {
                _enabled = value;
                _reset();
                tUpdate.Change(0, _enabled ? _updateintervall : 0);
            }
        }
        
        /// <summary>
        /// Creates a instance of SpeedMeter.
        /// </summary>
        /// <param name="adapter"> The NetworkInterface to observe. </param>
        public SpeedMeter(NetworkInterface adapter)
        {
            if (adapter == null) throw new ArgumentNullException("adapter");

            _adapter = adapter;
            log_bytesDown = new List<long>();
            log_bytesUp = new List<long>();
            _maxbacklog = 10;
            _updateintervall = 500;
            _enabled = true;

            tUpdate = new Timer(new TimerCallback(_tUpdateCallback));
            tUpdate.Change(0, _updateintervall);
        }

        private void _reset()
        {
            log_bytesUp.Clear();
            log_bytesDown.Clear();
        }

        private void _tUpdateCallback(object parm)
        {
            if (_adapter.OperationalStatus == OperationalStatus.Up)
            {
                // get statistics
                _stats = _adapter.GetIPv4Statistics();

                // calc. download
                DownloadSpeed = _calculateKbps(ref log_bytesDown, _maxbacklog,
                    _updateintervall, _stats.BytesReceived);
                // calc. upload
                UploadSpeed = _calculateKbps(ref log_bytesUp, _maxbacklog,
                    _updateintervall, _stats.BytesSent);
            }
            else
            {
                DownloadSpeed = 0;
                UploadSpeed = 0;
            }

            if (Updated != null)
            {
                System.Windows.Forms.Control target =
                    Updated.Target as System.Windows.Forms.Control;
                if (target != null && target.InvokeRequired)
                    target.Invoke(Updated, this, null);
                else
                    Updated.Invoke(this, null);
            }
        }

        private float _calculateKbps(ref List<long> bytelog,
            int maxbacklog, int updateintervall, long bytes)
        {
            float kbps = 0;

            bytelog.Insert(0, bytes);
            if (bytelog.Count > maxbacklog) bytelog.RemoveAt(maxbacklog);
            if (bytelog.Count > 1)
            {
                for (int i = 0; i < bytelog.Count - 1; i++)
                {
                    kbps += (bytelog[i] - bytelog[i + 1]);
                }

                kbps /= bytelog.Count;
                kbps *= (1000 / updateintervall);
            }

            return kbps;
        }

        #region IDisposable Member

        public void Dispose()
        {
            _reset();
            tUpdate.Dispose();
        }

        #endregion

        #region Static

        /// <summary>
        /// Get the first busy NetworkInterface.
        /// </summary>
        /// <returns> The first busy NetworkInterface. </returns>
        public static NetworkInterface GetBusyAdapter()
        {
            foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces())
            {
                IPv4InterfaceStatistics stats = adapter.GetIPv4Statistics();
                if (stats.BytesReceived > 0)
                    return adapter;
            }

            return null;
        }
        #endregion
    }
}

Schlagwörter: kbps, Netzwerkgeschwindigkeit, Netzwerkspeed, Speed, Netzwerk, Geschwindigkeit

02.11.2009 - 15:02 Uhr

Schau mal in deinen Betriebsystemsoptionen nach was denn da für ein Zeichen zur Formattierung vorgegeben wird 😃

achja und die Schriftart deiner Ausgabe sollte auch das '€' können.

02.11.2009 - 14:44 Uhr

Also wenn man Angst haben muss das sensible Daten abhanden kommen, ist ein Programm was das verhindern soll der absolut falsche Ansatz. Man sollte zusehen das man dem Personal das zugang zu solchen Daten hat vertrauen kann. Funktioniert das nicht liegt das Problem beim Personalchef. Sind die Daten so sicherheitsrelevant das niemand zugriff darauf haben darf sollte man auch niemanden zugriff gewähren.

Das man ein kleines Maß an Sicherheit durch einige Standartprogramme wie eine Firewall oder einen Virenscanner erhält sollte hier klar allerdings auch Vorraussetzung sein.

29.10.2009 - 10:44 Uhr

stimmt habe es auch ausprobiert. der selbe effekt das video läuft in einem seperaten fenster.

29.10.2009 - 09:10 Uhr

Jetzt kommt die Fehlermeldung "Gerät ist nicht geöffnet oder wird vom MCI nicht erkannt"! Irgendwelche Ideen??

Diese Fehlermeldung kam bei mir wenn das angegebene Medium nicht geöffnet werden konnte. Also wenn z.B. der codec fehlt oder man einen falschen befehl sendet.

28.10.2009 - 16:39 Uhr

Ich hab die Professional 32Bit / 64Bit bei mir am laufen, aber schon ein bisschen länger (MSDNAA)... Grundsätzlich: Geld ausgeben würde ich nie dafür.

27.10.2009 - 23:32 Uhr

wenn ich das richtig sehe wird in dem gelinkten tutorial nicht beschrieben wie du versuchst ein fenster bzw eine picturebox als renderfläche zu definieren. wäre nicht schlecht wenn du den code mal postest denn der im tutorial enthaltene code läuft bei mir 1a.

27.10.2009 - 22:12 Uhr

Bei manchen Softwareunternehmen sind Praktikaten auch einfach aus Sicherheitstechnischengründen nicht möglich bzw. die Unternehmen wollen dies einfach nicht.

27.10.2009 - 16:34 Uhr

das dateiformat einer exe nennt man PE-Format (Portable Executable) portieren kann man das natürlich in jede andere beliebige datei nur weiß windows, weil es typ orientiert arbeitet, bei einer *.exe sofort bescheid das es sich um ein programm handelt. das programm wird in den speicher geladen, der PE header gelesen und verarbeitet, dann werden die statischen bibliotheken dazugeladen und variablen initialisiert und irgentwann wird dann die "kontrolle" an die winmain (siehe win32/win64 programmierung) des programms übergeben.

korrigiert mich wenn ich da falsch liege.

:/ da is die voyager doch wieder schneller... tststs..