Diskuze: Dockable pro soubory

C# .NET .NET (C# a Visual Basic) Dockable pro soubory American English version English version

Aktivity (1)
Avatar
matesax
Redaktor
Avatar
matesax:26.5.2012 19:10

Dobrý den,
nevím co přesně zadat, proto se ptám zde - potřeboval bych návod na vytvoření dock toolbaru pro soubory. Takovou menší plochu. Děkuji

 
Odpovědět 26.5.2012 19:10
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na matesax
David Jančík:26.5.2012 20:52

Ahoj,
umísťování aplikací uděláš napříkad takto:
http://www.jonasjohn.de/…-example.htm
Poté si je zapíšeš do souboru -> jejich pozici, jméno a cestu k souboru, který se má spustit. To pak budeš vždy při spouštění načítat.

Nahoru Odpovědět 26.5.2012 20:52
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík
matesax:26.5.2012 21:01

A šlo by to i jako ikonu? Resp - jak získat ikonu z onoho souboru. Děkuji

 
Nahoru Odpovědět 26.5.2012 21:01
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na matesax
David Jančík:26.5.2012 21:10

Tak určitě.
Zkus toto, to používám v IconChangeru:

[DllImport("shell32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
private static extern int PickIconDlg(IntPtr hwndOwner, System.Text.StringBuilder lpstrFile, int nMaxFile, ref int lpdwIconIndex);

[DllImport("shell32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
public static extern IntPtr ExtractIcon(IntPtr hInstance, string strFileName, uint uiIconIndex);

private void button2_Click(object sender, EventArgs e)
{
        string iconfile;
        int iconindex = 0;
        int retval;
        System.Text.StringBuilder sb;

        iconfile = Environment.GetFolderPath(Environment.SpecialFolder.System);
        iconfile = iconfile + @"\shell32.dll";
        sb = new System.Text.StringBuilder(iconfile, 500);
        retval = PickIconDlg(this.Handle, sb, sb.Capacity, ref iconindex);
        iconfile = sb.ToString();
        path = iconfile + "," + iconindex;
        Graphics g = pictureBox1.CreateGraphics();
        g.Clear(this.BackColor);
        g.DrawIcon(extractIcon(iconfile, iconindex), new Rectangle());
        textBox1_TextChanged(sender, e);
}

public static Icon extractIcon(string strPath, int nIndex)
{
        Icon icon = null;
        IntPtr hIcon = ExtractIcon(IntPtr.Zero, strPath, (uint)nIndex);
        if (IntPtr.Zero != hIcon)
        {
                icon = Icon.FromHandle(hIcon);
        }
        return icon;
}
Nahoru Odpovědět 26.5.2012 21:10
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík
matesax:1.6.2012 20:01

Ten uint index - o co jde? Mě to totiž nejde - dal jsem ho 1 (možná v tom chyba není,...), ... Děkuji

 
Nahoru Odpovědět 1.6.2012 20:01
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na matesax
David Jančík:2.6.2012 21:04

Nemusíš nic nastavovat. To jen zkopíruješ. Pak tlačítko, kterému přiřadíš ten kód co je v ukázce bude vyvolávat okýnko pro výběr ikonky.

Nahoru Odpovědět 2.6.2012 21:04
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík
matesax:2.6.2012 21:10

Vyřešeno:

pictureBox1.Image = Image.FromHbitmap(Icon.ExtractAssociatedIcon(cesta).ToBitmap().GetHbitmap());

Jen se nepřenesou průhledné pixely (bitmapa nemá alfakanál) - není jiná možnost? Děkuji.

 
Nahoru Odpovědět 2.6.2012 21:10
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na matesax
David Jančík:2.6.2012 21:20

Jako ty chceš jen vytáhnout ze souboru ikonku jo?
Tak to pak:

Icon.ExtractAssociatedIcon()

http://msdn.microsoft.com/…tedicon.aspx

Nahoru Odpovědět 2.6.2012 21:20
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík
matesax:2.6.2012 21:22

JJ - ale to už mám - mě jde teď o ten alfakanál,...

 
Nahoru Odpovědět 2.6.2012 21:22
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na matesax
David Jančík:2.6.2012 21:29

A tam není možnost dát si to jako png?
Nebo to vykresluj přes Graphic:

g.DrawIcon(extractIcon(iconfile, iconindex), new Rectangle());
Nahoru Odpovědět 2.6.2012 21:29
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík
matesax:2.6.2012 21:35

Co je to g?

 
Nahoru Odpovědět 2.6.2012 21:35
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na matesax
David Jančík:2.6.2012 21:36

Díval si se na ten příklad co jsem ti posílal?

Graphics g = pictureBox1.CreateGraphics();
       g.Clear(this.BackColor);
       g.DrawIcon(extractIcon(iconfile, iconindex), new Rectangle());
Nahoru Odpovědět 2.6.2012 21:36
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík
matesax:2.6.2012 22:00

No jo - ale nevím co s tím. :) Jak to vykreslit v pictureboxu? Děkuji.

 
Nahoru Odpovědět 2.6.2012 22:00
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na matesax
David Jančík:2.6.2012 22:09

A proč to nemůžeš udělat tak jak sem ti napsal? Sem ti poslal hotový řešení stačí to jen zkopírovat. Tady se můžeš podívat jak to funguje:
http://www.itnetwork.cz/index.php?…

Nahoru Odpovědět 2.6.2012 22:09
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík
matesax:3.6.2012 6:29

Vyřešeno :) :

pictureBox1.Image = Icon.ExtractAssociatedIcon(cesta).ToBitmap();
 
Nahoru Odpovědět 3.6.2012 6:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.