Thursday, August 22, 2013

පෙම්වතී....


සමන් පිච්ච කැකුලු වගේ...
නුඹේ සිනහ නගන අගේ...
දුර සිටියත් මලක් වගේ...
සුවද හමන බවක් හැගේ...

නැතුවත් නුබ මා අද්දර...
මැවෙයි නුබේ වත සුන්දර...
කැකුලු මලකි නුබ පින්බර...
මෙතරම් ඇයි ආඩම්බර...

හෙට උදයෙත් මා එන මග...
සොදුරු උවන රැදෙනා වග...
අල්ලන් අත නොකරම දග...
රැදෙනු නිසැක මගේම ලග...
~


Wednesday, June 26, 2013

නෙට්වර්ක් එකෙනුත් පේන විදියට ෆොල්ඩර් අයිකන් වෙනස් කරන්නේ මෙහෙමයි... (Customize Folder Icons to show in network)

ෆොල්ඩෙර් එකකට custom අයිකන් එකක් දාන්න හරිම ලේසි.
Right Click on the Folder -> Properties -> Customize (Tab) -> Change Icon


මෙතන පෙන්නන අයිකන් එකක් හරි නැත්නම් Browse... ගිහින් ගැලපෙන අයිකන් එකක් හරි තෝරගන්න පුලුවන්.


මේ තියෙන්නෙ එහෙම වෙනස් කලාම එන විදිය. වෙන ෆොල්ඩර් අයිකන් එකක් තේරුවනම් ඒ විදියට වෙනස් වෙයි. 
හැබැයි මේකෙ තියෙන ප්‍රශ්නෙ තමයි මේ ෆොල්ඩර් එක share කලොත් නෙට්වර්ක් එක හරහා බලන කෙනෙක්ට මේ වෙනස් වෙච්ච විදියට පෙන්නෙ නෑ. ;(

දැන් කරන්න හදන්නෙ නෙට්වර්ක් එකෙත් පේන විදියට ෆොල්ඩර් එකේ අයිකන් එක වෙනස් කරන්න. :D

 මේ උඩ කරල තියෙන විදියට කලාම නෙට්වර්ක් එකෙන් පේන්නෙ නැත්තෙ මෙතනදි වෙන්නෙ Local change එකක් විතරක් වීමයි. ඒ නිසා අපි මේ change එක global change එකක් විදියට හදන්න ඕන. එතකොට කොහේ ඉදන් බැලුවත් එකම විදියට පෙනෙයි.

ඔන්න වැඩේ පටන් ගමු. ;)

මුලින්ම Show hidden files,folders or drives ටික් කරගන්න සහ Hide protected operating system files (Recommended) අන්ටික් කරගන්න.

ෆොල්ඩර් එකක් ඇතුලට ගිහිල්ලා Menubar වල;
Tools -> Folder Options -> View වලට යන්න. එතනින් ඔය කියපු වැඩේ කරගතැකි.



(Tools කියල එකක් නැත්නම් Tools enable කරගන්න මෙහෙම.
Organize->Layout->Menubar)

පළමු පියවර ඉවරයි. ;)

දැන් අපිට ඕන Folder icon එකක් හදාගෙන හරි, ඩවුන්ලෝඩ් කරගෙන හරි අපිට icon එක වෙනස් කරන්න ඕන ෆොල්ඩර් එක ඇතුලට දාගන්න. (මම නම් ඒ icon එක rename කරගත්ත Folder.ico විදියට. දැන් Test කියන ෆෝල්ඩර් එක ඇතුලෙ Folder.ico කියන නමින් අපිට දාගන්න ඕන icon එක තියෙන්න ඕනි.)

දැන් ෆෝල්ඩර් එකේ  (මගේනම් Test ෆොල්ඩර් එකේ)  right click කරල ගිහින් අපි දාපු icon එක ෆෝල්ඩර් icon එක විදියට සෙට් කරන්න.
Right Click on Folder -> Properties ->  Customize -> Change Icon... -> Click Browse... on new window -> Go to inside of Test Folder and select Folder.ico


දැන් ෆෝල්ඩර් අයිකන් එක වෙනස් වෙලා ඇති. ඒත් තාමත් නෙට්වර්ක් එකෙන් බැලුවම වෙනස් වේල පේන්නෙ නෑ. තව වැඩ තියෙනවා. :D  
දැන් ෆෝල්ඩර් එක ඇතුලට යන්න. ෆෝල්ඩර් එක ඇතුලෙ තව අලුත් ෆයිල් එකක් හැදිල ඇති desktop.ini කියල . ඒ ෆයිල් එක Notepad එකෙන් Open  කරන්න.



Open කරපු desktop.ini ෆයිල් එකේ IconResource= එක ඉස්සරහ තියෙන line එකේ අපේ icon එකේ නම ඉතුරු වෙද්දි path එක මකල දාල save කරගන්න.


desktop.ini ෆයිල් එක save කරල close කරන්න.
දැන් වැඩේ 99% ඉවරයි. :D 
නෙට්වර්ක් එකෙන් බැලුවත් නිකන්ම machine එකේ බැලුවත් දැන් අපි දාපු Folder icon එකෙන් තමා ෆොල්ඩර් එක පෙන්නන්නෙ.


අපි දාපු Folder.ico එකෙ right click කරල Hide කරන්න.
Right Click on Folder.ico -> Properties -> Tik Hidden (Check box)

ඊට පස්සෙ Folder Options වලට ගිහින් Don't show hidden files, folders, or drivers ටික් කරන්න සහ Hide protected operating system files (Recommended) ටික් කරන්න.


දැන් 100% ඉවරයි. නෙට්වර්ක් එකෙන් බලන්නයි දැන් තියෙන්නෙ.:D 

මේ තියෙන්නේ මන් එහෙම හදපු ෆොල්ඩර් ටිකක් නෙට්වර්ක් එකෙන් බැලුවම පේන විදිය.

ෂෝයි නේද? :D


Thursday, June 20, 2013

අපේ තාත්තා කියන කව...



වනයක් මොටද වනයේ අලියෙක්          නැත්නම්...
අලියෙක් මොටද අලියගෙ ගජ මුතු        නැත්නම්...
මිනිහෙක් මොටද මිනිහගෙ ඔලුවක්       නැත්නම්...
ඔලුවක් මොටද ඔලුවේ මොළයක්          නැත්නම්...
~


දෙක හත දෙපැත්තේ...
තුන හත මැදට ඇත්තේ...
ඔලුව මැද තට්ටේ...
එනව ලොක්කා බතල වත්තේ... 

~

Thursday, May 30, 2013

වැස්සයි... මමයි...

දවසක් කැම්පස් එකේ එක්සෑම් එකකට පාඩම් කර කර ඉද්දි වහින්න අරන් ටිකකින් කරන්ට් එකත් ගියා... පාඩම් කිරිල්ල පැත්තකට දාල වැස්ස ගැන කල්පනා කරන්න ගත්ත වෙලේ තමා මේ අදහස් හිතට ආවෙ...


බිදුවකි තවත්... 
තව තවත්...
හොරාවක් දෙකක්...
වුවත් නුබ සුමිතුරු...
විඩාබර මිහිකතට...
වීද මට පමණක්ම පස මිතුරු....
ඉදින් නුබ නම්...
තවත් මා බලා ඉන්නම්... 
~

Monday, May 20, 2013

නුඹ එනවානම්...




නුඹ එනවානම්...
අදුරු රැය නිසලයි...
කියන්නට දේ බොමැයි...
නුඹෙ සුමුදු වත සිහි වෙයි..
හද කොනක කවි ලතැවෙයි...

නැගෙන තරු මල් යායක්...
උණුසුමට මුදු හාදුවක්...
තවත් කුමටද පමාවක්...
එන්න තුරුලට ආයෙමත්...

හිරු නැගෙන්නට කල්පයක්...
අදුරු රැය රුදු සරදමක්...
නුබ එතැයි එක හීනයක්...
මග බලන්නම් සිය වරක්...

නැගෙන සුසුමන් සෙමින් නිතරම...
සිහි කරයි හද නුඹව අපමණ...
බැදුණු සෙනෙහස නුඹට, නොමියන...
සිත දවයි නුඹ දුරක බව දැන...
~

Sunday, May 19, 2013

C++, Win32 API එක පාවිච්චි කරල GUI එකක් ලේසියෙන්ම හදන හැටි...

සමාන්‍යයෙන් C++ වලින් GUI එකක් හදන්න ටිකක් අමාරුයි. අද මන් මේ කියා දෙන්න යන්නෙ ලේසියෙන්ම Win32 API එක පාවිච්චි කරල GUI එකක් හදන හටි. QT libraries යොදාගෙනත් කරන්න පුලුව්න්. ඒත් අද මන් මේ කියා දෙන විදියට එහෙම libraries මුකුත් ඕනි නෑ, ගොඩාක් ලේසි. මන් මේකට යොදගන්නෙ Visual Studio 2008. Drag and Drop විදියට GUI design කරන්න පුලුවන් මෙ විදියට කලාම.
ඔන්න එහෙනම් වැඩේ පටන් ගම්මු...

1) මුලින්ම VS 2008 වලින් අලුත් C++ Win32 ConsoleAplication Project  එකක් පටන් ගන්න. ඕනි විදියට නම් එහෙම දාගන්න පහලින් ;)   (මන් මෙතනදි දෙන්නෙ TestGUI කියල )


2) ඊලගට එන window එකෙන් project එකේ අනිත් settings හදන්න ඕනි. Application Settings වලදි Application Type: Console Application, Additional options: Empty Project විදියට හදන්න. (Precompiled Heder untik කරන්න.) ඒ ටික කරල ඉවර වෙලා Finish කරන්න.


3) Project Configurations
Right Click on Project-> Properties->Linker->System

SubSytem Windows එක (/SUBSYSTEM:WINDOWS) විදියට වෙනස් කරන්න.

Apply->OK


4) දැන් තියෙන්නෙ resource file එකක් add කරන්න.
Right Click on Resource Files filter in Project-> Properties->Add->New Item


Add New Item Window එකෙන් අලුත් Resource file එකක් Create කරගන්න. (කැමති නමක් දෙන්න , මන් මෙතනදි දෙන්නෙ MainGUI කියල )


5) දැන් Resource Files ෆිල්ටර් එකට MainGUI කියල .rc file එකක් ඇවිල්ල ඇති. දැන් ඒක double click  කරන්න. එතකොට Resource View එකට යයි. (ඔයාල වෙන නමක් දැම්මනම් ඒ දාපු නමින් .rc එකක් ඇති.)

Right Click on MainGUI.rc -> Add Resource...

Add Resource window  එකෙන් Dialog කියන එක කරල New button එක click කරන්න. ඊට පස්සෙ මේ පහලින් තියෙන දෙවනි ScreenShot එක වගේ තැනකට එයි.



දැන් අපිට කැමති විදියට එහා පැත්තෙ තියෙන ToolBox එකෙන් Itemsඩ්‍, drag and drop කරල කැමති විදියට අපේ GUI එක design කරගතැකි.


තාම වැඩ ඉවර නෑ. දැන් මේක Run කරගන්නත් එපැයි... ;) 

Header Files filter එකට resource.h කියල header file එකක් ඇවිල්ල ඇති. වැරදිලාවත් ඒකනම් delete කරන්නනම් එපා. ඒ file එක අපි resource file එක add කරද්දි auto generate වෙන file එකක්. ඒ header එකේ තමයි අපි resource file (GUI) එකට අඩ්ඩ් කරන components ඇත්තටම define වෙන්නෙ. 



6) දැන් .cppඑකක් අඩ්ඩ් කරගෙන ඉතුරු ටික කරන්නෙ.
Right Click on Source Files -> Add -> Add New Item
එතනින් C++ File , select කරල cpp එකට කැමති නමක් දෙන්න. ((මන් මෙතනදි දෙන්නෙ Main කියල )


දැන් ඒ cpp එකේ මේ ටික type කරන්න. 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <Windows.h>
#include <WindowsX.h>
#include <tchar.h>
#include "resource.h"

INT_PTR CALLBACK SD_DialogProc( HWND hwndDlg,  UINT uMsg, WPARAM wParam, LPARAM lParam  );

////////////////////////////////////////////////////////////////////////////////
int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPWSTR /*lpCmdLine*/, int /*nShowCmd*/)
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),GetDesktopWindow(),SD_DialogProc);
return 0;
}

////////////////////////////////////////////////////////////////////////////////
BOOL SD_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void SD_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);


INT_PTR CALLBACK SD_DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hwndDlg, WM_INITDIALOG, SD_OnInitDialog);
HANDLE_MSG(hwndDlg, WM_COMMAND, SD_OnCommand);
}

return FALSE;
}

BOOL SD_OnInitDialog(HWND hwnd, HWND /*hwndFocus*/, LPARAM /*lParam*/)
{
return FALSE;
}

void SD_OnCommand(HWND hwnd, int id, HWND /*hwndCtl*/, UINT /*codeNotify*/)
{
switch(id)
{
case IDOK:
{
MessageBox(hwnd, L"Welcome to C++ GUI building...!!!", L"Information", NULL);
}
break;

case IDCANCEL:
EndDialog(hwnd, 0);
break;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


මේ codeඑක ගැනත් පොඩ්ඩක් පැහැදිලි කරන්නම්.

අපි මේකෙ main method එක ඇතුලට අපි add කරපු dialog එකෙ නම දාල, Run කරන්න විතරයි දැන් තියෙන්නෙ. 



GUI එක Run වෙද්දිම මොනවහරි වෙන්න දෙයක් තියෙනවනම්

BOOL SD_OnInitDialog(HWND hwnd, HWND /*hwndFocus*/, LPARAM /*lParam*/)
{
return FALSE;
}

metod එක ඇතුලෙ ඒව ලියන්න ඕනි. උදාහරණයක් විදියට Combo Box එකකට default values පුරවන වගේ ඒව.
GUI එකෙන් එන Action Listen කරන්නෙ,

void SD_OnCommand(HWND hwnd, int id, HWND /*hwndCtl*/, UINT /*codeNotify*/)
{
}
අපි GUI එකට add කරන හැම component එකකටම Unique Id එකක් තියෙනව. ඒ id එක දල caseඑකක් ලියල අදාල component එකෙන් එන action listen කරතැකි.

උදා: IDOKකියන්නෙ මගේ GUI එකේ තියෙන OK button එකෙ Id එක. දැන් ඒ  button එක click කලාම ඊට අදාළව case එක ඇතුලෙ ලියල තියෙන වැඩේ තමා වෙන්නෙ.


switch(id)
{
case IDOK:
{
MessageBox(hwnd, L"Welcome to C++ GUI building...!!!", L"Information", NULL);
}
break;
}



එහෙනම් ඔන්න වැඩේ ඉවරයි. ප්‍රශ්න එහෙම තියෙනවනම් කොමෙන්ටුවක් දාල අහන්නකෝ...


 මම හදපු project එක ඔනිනම් පහළ ලින්ක් එකෙන් download කරගන්න. :-) 




Saturday, May 18, 2013

නෙත් කැල්ම...




රිවි කිරණ වැද දිලෙන...
පිණි බිද වැන්න...
සොදුරු ඔය නෙත් කැල්ම...
කුමක් වීද මා හට...
නුහුණුය මනෙතු...
වෙනත රදන්නට...
සැගවී යන්නෙම් මා...
ඔය දෑස තුලම තවත්...
ආදරෙන් තව තවත්...
~


මගේ ඇස් ඔයා ඉස්සරහ දිලිසෙනකොට, වයින් වීදුරුවක් බිදෙනව වගේ ඔයා හිනා උනා. වයින් බින්දු විසිරිල මගේ හිත තාමත් මත් වෙල වගෙ. මාව පාවෙලා පාවෙලා ගිහින් ආයිත් නවතින්නෙත් ඔයා ලගමයි... ඒ ඇයි කියන්න මන් දන්නෙ නෑ...