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
ContactListViewItem.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>