IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Úvod, externí třídy ve speciální složce - ISIM

V této sérii článků si ukážeme jak si naprogramovat jednoduchý instant messenger. Budu vycházet z ISIMu. Vlastně ho teď přepisuji, aby to bylo trošku čitelné a nebyla to taková prasárna, ale to sem neřekl... Nebudu rozebírat detaily. Ale v kódu nechám potřebné komentáře. Případně není problém zeptat se pod článkem nebo ve fóru. Moc nepočítám s tím, že podle toho co budu psát, budeš sestavovat program. Pokud ano, je třeba to pochopit a psát to sám, jak to začneš kopírovat, tak se v tom ztratíš. Projdi si ty jednotlivé úryvky kódu a poté si stáhni zdrojový kód, odzkoušej si jej a projdi si jeho funkcionalitu. Zkus si nějaké změny. Jde mi hlavně o to, ukázat zajímavosti, na které jsem narazil, které se mohou hodit, nějaké fičury a problémy na které jsem narazil a jak jsem je řešil, pak kompletní zdrojový kód, pro zvědavce a koumáky a s ním také možnost si dodělávat vlastní fce a udělat si IMko na míru. Kdyby ti něco nebylo jasné, tak se neváhej ptát, alespoň to počástech rozebereme dopodorbna :)

Co je zajmavý a dobrý vědět. Pokud chci používat tzv. live debugging tedy upravovat program za běhu, je třeba ho mít spuštěný pod platformou x86 a jako Debug -> klepnutí na danou Solution -> Properties -> Configuration properties. Pokud tam x86 nebude dá se přidat, něco jako Add new. Projekt mám .NET FW 3.5 SP1 WinForms x86 AnyCPU.

Nejprve si navrhneme funkcionalitu a roztřídění toho, čím začneme. Tohle bude dlouhá cesta. Propojení jednotlivých prvků a napojení je na knihovny protokolů.

Program.cs

  • Kontrola přítomnosti požadovaného .NET FW
  • Mutex aplikace - může být spuštěna pouze jednou

MainForm.cs

  • Kontakt list

ChatForm.cs

  • Taby jednotlivých konverzací
    • Vlastní RichTextBox konverzace (barevné nicky a smajlíci)
    • TextBox zpráva
    • Tlačítko na odeslání zprávy (něco na něm bude)

ChatTab.cs

  • Vlastní komponenta spravující taby a jejich komponenty

ChatTabPage.cs

  • Vlastní komponenta obsahující výše zmíněné prvky

ContactListVi­ewItem.cs

  • Vlastní komponenta položka kontaktu v kontakt listu obsahující navíc informace o kontaktu

ConversationRTB.cs

  • Vlastní komponenta RichTextBox s barevnými nicky, smajlíky a možností skrolování

Global.cs

  • Všecko co je statický a dostupný ze všady
    • Přístup k okýnkům
    • Funkce messengeru (odeslání, přidání zprávy...)
    • Konverter pro převod objektů jednotlivých knihoven na ISIM friendly
    • Práce s textem

ISIMContact.cs

  • Interface našeho kontaktu - definice vlastností
  • Třídy pro kontakty z jednotlivých knihoven
  • Komparátor kontaktů (dostupnost, jméno)

Login.cs

  • Údaje pro připojení k serveru

Protože je fakt cool mít externí knihovny v složce plugins, tak si řekneme jak to pošéfit. Nejdřív si je přesuneme do požadované složky a znovu ji přidáme tentokrát z ní pak na ní klepneme v references -> Properties. Je tam tuším CopyLocal to je to co zajišťuje kopírování knihovny do složky s programem. Takže už to dělat nebude, muhehe. Teď vytvoříme ApplicationConfig - normálně přidat soubor a tam je přímo tento soubor v nabídce. A do něj se dá:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="plugins;" />
    </assemblyBinding>
  </runtime>
</configuration>

 

Všechny články v sekci
Programujeme vlastní Instant Messenger ::ISIM::
Přeskočit článek
(nedoporučujeme)
Přítomnost .NET 3.5 SP1 a Mutex - ISIM
Článek pro vás napsal David Jančík
Avatar
Uživatelské hodnocení:
1 hlasů
Autor je vášnivý programátor. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.
Aktivity