Search This Blog

Friday, October 27, 2017

Cross-platform C++ programming with wxWidgets

  1. နိဒါန်း
  2. Windows တွင်တပ်ဆင်ခြင်း
  3. Linux တွင်တပ်ဆင်ခြင်း
  4. Mac တွင်တပ်ဆင်ခြင်း
  5. အကိုးအကားများ

နိဒါန်း

wxWidgets က Windows ၊ Linux နဲ့ Mac OSX အစ​ ရှိ​တဲ့ ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ GUI applications တွေ ရေး​ဖို့ အတွက် C++ library ပါ။ သူ​နဲ့ GUI code တွေ ရေး​ပြီး​ ရင် ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ ကုဒ် ကို သိပ်​ပြင်​ စရာ မ​လို​ပဲ တန်း​ပြီး compile လုပ်၊ run လုပ်​လို့​ ရ​ပါ​တယ်။

wxWidgets ​က free လည်း​ပေး open source လည်း ​ဖြစ် တဲ့ software ပါ။ ကိုယ်​ပိုင် ဆော့​ဝဲ တွေ​ ထုတ်​မယ်​ ဆို​ရင် လည်း ဘာ​မှ ကန့်​သတ်​ချက်​ တွေ မ​ရှိ​ ပါ​ဘူး [wxW98]။ အဲဒါက Qt နဲ့ အဓိက ကွာခြားချက် ပါ။ Qt က LGPLv3 လိုင်စင် ကို free ပေးထားပြီး၊ ကိုယ်ပိုင် စီးပွားရေး အတွက် သုံးမယ် ဆိုရင် ကန့်သတ်ချက် တချို့ ရှိတာကြောင့် လိုင်စင် ဝယ်ဖို့ လိုကောင်း လိုနိုင် ပါတယ် [Qt17]။

Native platform ကို တတ်နိုင် သလောက် သုံးထား တာမို့ wxWidgets သုံးလို့ ရလာတဲ့ GUI တွေဟာ သုံးတဲ့ platform နဲ့ လိုက်ဖက်ပြီး ပင်ကို အမြင် အတိုင်း တသားထဲ ကျ တာကို ခံစား ရမှာပါ [wxW12]။ Standard C++ ကိုပဲ သုံးထားပြီး Qt တို့လို အထူး extension တွေ မသုံးထား တဲ့ အတွက် ရှုပ်ထွေးမှု နည်းတာ ကလည်း ကောင်းတဲ့ အချက် တစ်ခုပါ။

wxWidgets နဲ့ ရလာတဲ့ binary application တွေဟာ သေးငယ် ပေါ့ပါး တာမို့ embedded system တွေအတွက် အထူး သင့်တော် ပါတယ်။ နောက်တစ်ခါ library အရွယ်အစား တွေ ယှဉ်ရင်လည်း ဥပမာ အနေနဲ့ Qt library ကို တပ်ဆင်ရင် \(\approx 200\) MB လောက် အရွယ် ရှိပေမယ့် wxWidgets library က \(\approx 30\) MB လောက်ပဲ ယူပါတယ်။

wxWidgets က C++ အတွက် သာ မကပဲ python, perl, php, java, lua, lisp, erlang, eiffel, C# (.NET), BASIC, ruby နဲ့ javascript အတွက် တောင်မှ bindings [wxW15a] တွေ ရှိပါတယ်။ wxWidgets က တော်တော် ပြည့်စုံ ရင့်ကျက် တဲ့ GUI toolkits ဖြစ်ပြီး၊ utility classes လည်း အများကြီး ရှိတာမို့ ကောင်းမွန် သင့်တော် တဲ့ GUI toolkits အနေနဲ့ ညွှန်းဆို ချင်ပါတယ်။

wxWidgets ကို အသုံးပြုတဲ့ သူတွေ၊ အဖွဲ့အစည်းတွေ အများကြီး ရှိပြီး အဲဒီ အထဲမှာ လူသိများ တာတွေက NASA, AMD, Xerox, နဲ့ Open Source Applications Foundation (OSAF) တို့ ဖြစ်ပါတယ်။ ထင်ရှားတဲ့ wxWidgets applications တွေက AVG AntiVirus, Audacity, Filezilla, Code::Blocks, CodeLite တို့ ဖြစ်ပါတယ်။

Windows တွင်တပ်ဆင်ခြင်း

wxWidgets ကို Windows မှာ အသုံးပြု တဲ့အခါ IDE အမျိုးမျိုး နဲ့ တွဲသုံးနိုင် ပါတယ်။ Microsoft Visual Studio IDE ကို သုံးလို့ ရသလို၊ wxDev-C++CodeLite [Cod13; Cod17] ၊ Code::Blocks စတဲ့ IDE တွေ ကိုလည်း ရွေးချယ် အသုံး ပြုနိုင် ပါတယ်။

wxDev-C++ ဖြင့်အသုံးပြုခြင်း

Windows ပေါ်​မှာ wxWidgets applications တွေ ဖန်တီး​ဖို့ ရွေးချယ် စရာ တစ်ခု အနေနဲ့ ဆိုရင် wxDev-C++ ကို တော်တော် သဘောကျ​ပါ​တယ်။ အဲ​ဒီ​မှာ Pragramming with wxDev-C++ (http://wxdevcpp-book.sourceforge.net/) ဆို​တဲ့ စာအုပ်​ကို လည်း တ​ခါ​ထဲ ရ​နိုင်​ တာကလည်း ပ​ရို​ဂ​ရမ်​တွေ လေ့​လာ​၊ ဖန်တီး​ တဲ့အခါ လွယ်ကူ အဆင်​ပြေ​ မြန်ဆန်​ ဖို့ အထောက် အကူ တစ်ခု ပါ။ wxDev-C++ ကို http://wxdsgn.sourceforge.net/ ကနေ download လုပ်ပြီး၊ install လုပ်နိုင် ပါတယ်။

အဲဒီနောက် wxDev-C++ ကို ဖွင့်ပြီး တဲ့အခါ File menu → New... → Project ကို နှိပ်ပြီး project တစ်ခု ဖန်တီး လိုက် ပါမယ်။ New project ဝင်းဒိုး ပေါ်လာ တဲ့ အခါ Basic tab ထဲက wxWidgets Frame အမျိုးအစား ကို ရွေး၊ wxTest စတဲ့ နာမည် တစ်ခုခု ပေး ပြီး OK ကို နှိပ်လိုက် ပါမယ်။


Figure. wxWidgets frame based project တစ်ခုကို wxDev-C++ တွင် ဖန်တီးခြင်း။


အဲဒီနောက် New wxFrame ဝင်းဒိုး မှာ Window style အမျိုးအစား၊ MingW gcc စတဲ့ compiler တွေကို ရွေးပြီး Create ခလုတ် ကို နှိပ် နိုင် ပါတယ်။

Figure. Frame အမျိုးအစား ရွေးချယ်သတ်မှတ်ခြင်း။


Project ဖန်တီး ရလာ တဲ့ အခါ GUI design ကို wxTestFrm.wxform ဆိုတဲ့ tab မှာ တွေ့နေ ရမှာ ဖြစ်ပါတယ်။ wxTestFrm.cpp စတဲ့ source ဖိုင် တွေမှာ လည်း အမျိုးမျိုး ပြုပြင် စမ်းသပ် နိုင် ပါတယ်။ Run ခလုတ် ကိုနှိပ် ဒါမှမဟုတ် F8 ကီးကို နှိပ် လိုက်ရင် GUI application run လာတာ ကို တွေ့ရ ပါလိမ့်မယ်။

Figure. GUI နမူနာ application တစ်ခု wxDev-C++ တွင် run ခြင်း။


Windows application တွေ​မှာ form ရဲ့ icon ကို သတ်​မှတ်​လို့ ရ​ပါ​တယ်။ wxWidgets ကုဒ်​ထဲ မှာ icon ဖိုင်​ကို xpm format နဲ့ တစ်​ခါ​ထည်း ထည့်​လို့ ရ​ပြီး ဥပမာ အနေ့​နဲ့ favicon.xpm ကို ထည့်​ချင်​ရင် form ရဲ့ cpp ဖိုင်​အစ​မှာ အောက်​က အတိုင်း ထည့်​နိုင်​ပါ​တယ်။
#include "favicon.xpm"
နောက် ကုဒ်​ထဲ​မှာ icon ကို အောက်​က အတိုင်း ပြောင်း​ပေး ပြီး သတ်​မှတ်​နိုင်​ပါ​တယ်။
SetIcon(wxIcon(favicon_xpm));
icon ဖိုင်​ကို xpm format နဲ့​ရ​ချင်​ရင် ဖို​တို ရှော့ လို​မျိုး ပုံ​တွေ​ကို ပြင်​ပေး​နိုင်​တဲ့ GIMP ဆို​တဲ့ ဆော့ဖ်​ဝဲ ကို သုံး​နိုင်​ပါ​တယ်။ xpm ဖိုင်​ဖန်တီး​ပြီး​တဲ့ အခါ​မှာ အဲ​ဒီ​ဖိုင်​ကို Notepad လို​မျိုး text editor တစ်​ခု​ခု နဲ့ ဖွင့်​ပြီး ထိပ်​ဆုံး​နား​မှာ ပါ​တဲ့ ဖိုင် path ကို ပြောင်း​ဖို့ လို​ကောင်း လို​နိုင်​ပါ​တယ်။ ရှေ့က ဖိုင် path တွေ​ကို အကုန်​ဖျက်​ပြီး ဖိုင်​နာမည် တစ်​ခု​ပဲ ချန်​​တာ အဆင်​ပြေ တာကို တွေ့ရ ပါ​တယ်။ Windows explorer မှာ ပေါ်​မယ့် program ဖိုင်​ရဲ့ icon ကို ပြင်​ချင်​ရင် တော့ ဖိုင် extension rc ဆို​ပြီး​ရှိ​တဲ့ resource ဖိုင်​ကို ပြင်​ဖို့ လို​ပါ​တယ်။ ဥပမာ အနေ​နဲ့ favicon48.ico ဆို​တဲ့ icon ကို သုံး​ချင်​ရင် အောက်​က​အတိုင်း ကုဒ်​တစ်​လိုင်း ထပ်​ဖြည့်​ပြီး ပြင်​ဖို့ လို​ပါ​တယ်။
aaaaAppIcon ICON "favicon48.ico"
#include 
အဲ​ဒီ​မှာ icon ဖိုင်​ရဲ့ နာမည်​ကို aaaaAppIcon လို့ ပေး​ရ​တဲ့ အကြောင်း​က icon ဖိုင်​တွေ​ကို alphabetically စဉ်​လိုက်​ရင် သူ့​ကို အရင်​တွေ့​အောင်​လို့​ပါ။

Visual Studio ဖြင့်အသုံးပြုခြင်း

IDE အတွက် Visual Studio ကို https://www.visualstudio.com/downloads/ ကနေ download လုပ်ပြီး တဲ့အခါ ကိုယ် တပ်ဆင် ချင်တဲ့ အစိတ် အပိုင်း တွေကို သတ်မှတ်ပြီး တပ်ဆင် နိုင်ပါ တယ်။

Figure. Visual Studio Community 2017 ကို free download လုပ်၍ ရယူ ခြင်း။



Figure. Visual Studio Community 2017 ကို တပ်ဆင် ခြင်း။


နောက်တစ်ခါ wxWidgets ကို https://www.wxwidgets.org/downloads/ ကနေ download လုပ်လိုက် ပါမယ်။ ဒီ နမူနာ မှာတော့ latest stable release ဖြစ်တဲ့ 3.0.3 Windows installer ကို ရွေးလိုက် ပြီး C:/wxWidgets303/ ထဲမှာ install လုပ်လိုက် ပါမယ်။

Figure. wxWidgets ကို free download လုပ်၍ ရယူ ခြင်း။



Figure. wxWidgets latest stable release ကို Windows အတွက် installer ရယူ ခြင်း။


အဲဒီနောက် C:/wxWidgets303/docs/msw ထဲမှာ ဒါမှမဟုတ် online မှာလည်း တွေ့နိုင် တဲ့ install.txt ဆိုတဲ့ guide ထဲက Microsoft Visual C++ compilation ဆိုတဲ့ အပိုင်း ကို ဖတ်နိုင် ပါတယ် [wxW15b]။ စစခြင်း WXWIN ဆိုတဲ့ environment variable ကို သတ်မှတ်ဖို့ လိုပါတယ်။ အဲ့ဒါ အတွက် command window ကို administrator အနေနဲ့ run ဖို့ start menu ကို right click နှိပ်ပြီး command prompt (admin) ကို ရွေးလိုက် ပါမယ်။ အဲ့ဒီမှာ အောက်က command သုံးပြီး WXWIN ကို သတ်မှတ် လိုက် ပါမယ်။
setx -m WXWIN C:\wxWidgets303

Figure. WXWIN environment variable သတ်မှတ်ခြင်း။


အဲဒီနောက် မှာ wxWidgets ကို build လုပ်ဖို့ အတွက် အသင့် ပါရှိတဲ့ C:/wxWidgets303/build/msw ထဲက wx_vc12.sln ဆိုတဲ့ solution ကို Visual Studio 2017 နဲ့ ဖွင့်လိုက် ပါမယ်။

Figure. wxWidgets ကို build လုပ်ခြင်း။


Retarget Projects ဆိုပြီး upgrade လုပ်ဖို့ မေးလာတဲ့ အခါ OK ကို နှိပ်လိုက် ပါမယ်။

Figure. Project ကို upgrade လုပ်ခြင်း။


ပြီးတဲ့ အခါ configuration အမျိုးမျိုးကို ရွေးပြီး build အကြိမ်ကြိမ် လုပ်နိုင် ပါတယ်။

Figure. Configuration အမျိုးမျိုးဖြင့် build လုပ်ခြင်း။


အဲဒီလို build လုပ်ပြီး တဲ့အခါ နမူနာ wxWidgets application တစ်ခု ကို compile လုပ်ပြီး၊ run ကြည့်ပါမယ်။ ဒါကြောင့် C:/wxWidgets303/samples/ ထဲက minimal ဆိုတဲ့ folder ကို minial2 ဆိုတဲ့ နာမည်နဲ့ duplicate လုပ်လိုက် ပါမယ်။ ပြီးတဲ့ အခါ minimal_vc9.vcproj ကို ဖွင့်လိုက် ပါမယ်။

Figure. နမူနာ wxWidgets project တစ်ခုကို စမ်းသပ်ခြင်း။


အဲဒါ ကို build လုပ်ပြီး၊ run လိုက်တဲ့ အခါ အောက်က ပုံ အတိုင်း တွေ့ရမှာ ဖြစ် ပါတယ်။ အဲဒီမှာ minimal.cpp ဆိုတဲ့ source ကို အမျိုးမျိုး ပြုပြင် စမ်းသပ် ကြည့်နိုင် ပါတယ်။

Figure. wxWidgets minimal project ကို run ခြင်း။


ပရိုဂရမ် ရဲ့ icon ကို ပြင်ချင်ရင် C:/wxWidgets303/samples/sample.ico ကို ကိုယ်လို ချင်တဲ့ icon နဲ့ အစားထိုးလို့ ရပါတယ်။

Linux တွင်တပ်ဆင်ခြင်း

wxWidgets ကို Linux မှာ ထည့်ဖို့အတွက် အောက်က စာရင်း အတိုင်း terminal မှာ command တွေရိုက်ပြီး တပ်ဆင်ထည့်သွင်းနိုင် ပါတယ် [wxW14]။
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libwxgtk3.0-dev
Listing. Linux တွင် wxWidgets ကို တပ်ဆင်ခြင်း။

နမူနာ အနေနဲ့ ရိုးရှင်း တဲ့ wxsimple.cpp ဆိုတဲ့ ပရိုဂရမ် လေးကို အောက်ပါ အတိုင်း ဖန်တီး လိုက် ပါမယ် [Zet13]။
#include < wx/wx.h >
class Simple : public wxFrame
{
public:
    Simple(const wxString& title);

};
Simple::Simple(const wxString& title)
       : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150))
{
  Centre();
}

class MyApp : public wxApp
{
  public:
    virtual bool OnInit();
};

IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
    Simple *simple = new Simple(wxT("Simple"));
    simple->Show(true);

    return true;
}
Listing. wxsimple.cpp

ပြီးတဲ့ အခါ အောက်က command ကို သုံးပြီး compile လုပ်နိုင် ပါတယ်။
g++ wxsimple.cpp `wx-config --cxxflags --libs` -o wxsimple
`wx-config --cxxflags` က compile လုပ်ဖို့ အတွက် လိုအပ်တဲ့ flags တွေကို ထုတ်ပေး ပြီး `wx-config --libs` က link လုပ်ဖို့ အတွက် လိုအပ်တဲ့ flags တွေကို ထုတ်ပေး ပါတယ်။ ရှိတဲ့ Terminal က အဆင် မပြေရင် xterm ကို အောက်ပါ အတိုင်း တပ်ဆင် နိုင် ပါတယ်။
sudo apt-get install xterm
ပြီးရင် ခုနက ရလာတဲ့ binary ကို အောက်က အတိုင်း run လိုက်တဲ့ အခါ ပုံမှာ ပြထားသလို တွေ့နိုင် ပါတယ်။
./wxsimple

Figure. wxWidgets အတွက် wxsimple.cpp နမူနာ ကို BeagleBone Black, Debian Stretch တွင် run ခြင်း။


wxWidgets ကို source မှ build လုပ်ခြင်း

wxWidgets ကို source ကနေ စိတ်ကြိုက် build လုပ်ချင် ရင် အောက်က အတိုင်း build လုပ်ပြီး၊ install လုပ်နိုင် ပါတယ် [wxW14]။
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libgtk-3-dev
wget https://github.com/wxWidgets/wxWidgets/releases/download/v3.0.3/wxWidgets-3.0.3.tar.bz2
tar xjvf wxWidgets-3.0.3.tar.bz2
cd wxWidgets-3.0.3
mkdir gtk-build
cd gtk-build
../configure --enable-unicode --disable-shared --with-gtk=3
make
sudo make install
wx-config --version
Build လုပ်ပြီးတဲ့ wxWidgets ကို သုံးပြီး samples အခန်း ထဲက minimal ဆိုတဲ့ နမူနာကို run ကြည့် လိုက်တဲ့ အခါ အောက်ကပုံ အတိုင်း တွေ့ရ ပါတယ်။
cd gtk-build/samples/minimal
make
./minimal

Figure. wxWidgets ဖြင့် minimal နမူနာကို BeagleBone Black, Wheezy တွင် run ခြင်း။


Code::Blocks ဖြင့်အသုံးပြုခြင်း

Cross platform GUI application တွေ အတွက် wxWidgets C/C++ ပရိုဂရမ် တွေ ရေးသားဖို့ အတွက် Code::Blocks ဆိုတဲ့ open source လည်းဖြစ်၊ free လည်းပေးတဲ့ IDE နဲ့ တွဲသုံး ကြည့်ပါမယ်။ သူက extension တွေလည်းများ၊ စိတ်ကြိုက် configure လည်း လုပ်နိုင်ပြီး တော်တော် လည်း ခေတ်စား တဲ့ IDE တစ်ခု ပါ။ Code::Blocks IDE ကို တပ်ဆင် ဖို့ အတွက် terminal မှာ အောက်က စာရင်း အတိုင်း ရိုက်ထည့် နိုင် ပါတယ်။
sudo apt-get install build-essential
sudo apt-get install gdb 
sudo add-apt-repository ppa:damien-moore/codeblocks-stable
sudo apt-get update
sudo apt-get install codeblocks codeblocks-contrib
Listing. Code Blocks တပ်ဆင်ခြင်း။

Code::Blocks ကို တပ်ဆင် ပြီးတဲ့ အခါ၊ သူ့ကို ဖွင့်လိုက်ပြီး အောက်က ပုံ မှာ ပြထား သလို File menu → New → Project... ဒါမှ မဟုတ် Start here ဆိုတဲ့ tab ထဲက Create a new project ကို နှိပ် လိုက် ပါမယ်။ ပြီးရင် ပေါ်လာတဲ့ ဝင်းဒိုး ထဲက project အမျိုးအစား အတွက် wxWidgets project ကို ရွေးပြီး Go ကို နှိပ်လိုက် ပါမယ်။

Figure. Code::Blocks IDE တွင် ပရောဂျက် အသစ် ဖန်တီးမှု။


နောက်ပေါ် လာတဲ့ ဝင်းဒိုးမှာ အောက်က ပုံတွေ မှာ ပြထားတဲ့ အဆင့် တွေ အတိုင်း wxWidgets version ဥပမာ wxWidgets 3.0.x ကို ရွေးပြီး Next ကို နှိပ်နိုင် ပါတယ်။ ပြီးတဲ့ အခါ ပရောဂျက် နာမည် နဲ့ သိမ်းမည့် နေရာ ကို သတ်မှတ် နိုင် ပါတယ်။ နောက်တစ်ခါ GUI builder ကို None ရွေးပြီး၊ Project အမျိုးအစား ကို Frame Based ရွေးလိုက် ပါမယ်။ ဆက်လက်ပြီး GNU GCC Compiler ကို ရွေးပြီး၊ Default wxWidgets configuration သုံးဖို့ သတ်မှတ်ပြီး တဲ့ အခါ Finish ကို နှိပ်လိုက် ပါမယ်။

Figure. နာမည်နှင့်နေရာ သတ်မှတ်ခြင်း။



Figure. Application အမျိုးအစား။



Figure. Compiler သတ်မှတ်ခြင်း။



Figure. Configuration သတ်မှတ်ခြင်း။


အဲဒီလို Project ကို ဖန်တီးပြီးတဲ့ အခါ အောက်ပုံ မှာလို ညာဘက် preject explorer ဝင်းဒိုး ထဲက wxtestMain.cpp ၊ wxtestApp.cpp စတဲ့ source တွေကို အမျိုးမျိုး ပြုပြင် စမ်းသပ် ကြည့်နိုင် ပါတယ်။ ပြီးတဲ့ အခါ F9 ခလုပ် နှိပ်ပြီး Build and run လုပ်လိုက်ရင် နောက်တစ်ပုံ မှာ ပြထား တဲ့ အတိုင်း ပရိုဂရမ် ရဲ့ GUI output ကို တွေ့နိုင် ပါတယ်။

Figure. wxWidgets source နမူနာအား စမ်းသပ်ပြုပြင်ခြင်း။



Figure. wxWidgets နမူနာ ပရိုဂရမ်၏ GUI output ။


Mac တွင်တပ်ဆင်ခြင်း

ပထမ​ဆုံး Mac Ports ကို အရင် install လုပ်​ပါ​မယ်။ နောက် တစ်​ခါ အောက်​က ကွန်​မန်း ကို သုံး​ပြီး wxWidgets ကို install လုပ်​ပါ​တယ်။
port search wxWidgets
sudo port -v install wxWidgets-3.0
wx-config

Codelite ဖြင့်အသုံးပြုခြင်း

အဲ​ဒါ​တွေ ပြီး​တော့ CodeLite ကို install လုပ်​ပါ​တယ်။ wxWidgets code တွေ​ကို မှန်​မှန်ကန်​ကန် compile လုပ်​ဖို့ CodeLite ရဲ့ Compiler settings တွေ​ကို ပြင်​ဖို့ လို​ပါ​တယ်။ အဲ​ဒီ​လို ပြင်​ဖို့ Settings menu → Build Settings command ကို​သွား​ပါ။ Bulid Settings ဆို​တဲ့ ဝင်း​ဒိုး ပေါ်လာ​ရင် gnu g++ → Tools ဆို​တဲ့ အပိုင်း​က PATH environment variable: ဆို​တဲ့ field မှာ အောက်​က အတိုင်း ပြင်​ပါ​တယ်။
/opt/local/bin:/usr/local/bin:/usr/bin:/bin
နောက်​တ​ခါ build လုပ်​လို့ ထွက်​လာ​တဲ့ output အမျိုး​အစား​ကို မှန်​ဖို့ CodeLite IDE ရဲ့ Workspace windows ထဲ​က project folder ကို right click နှိပ်​ပြီး Make this project output a bundle command ကို နှိပ်​ပါ​မယ်။ နောက် Debug နဲ့ Release ဆို​တဲ့ targets နှစ်​ခု စလုံး​ကို မှတ်​နိုင်​ပါ​တယ်။ အဲ​ဒီ​နေရာ​မှာ​ပဲ ကိုယ့် ဆော့ဖ်​ဝဲ ရဲ့ icon file ကို သတ်​မှတ်​ပေး နိုင်​ပါ​တယ်။ အဲ​ဒီ icon ဖိုင် က icns format ဖြစ်​ဖို့ လို​ပါ​တယ်။ icns extension နဲ့ icon ဖန်တီး​ချင်​ရင် App store မှာ free ရ​နိုင်​တဲ့Img2icns ဆို​တဲ့ ဆော့ဖ်​ဝဲ ကို သုံး​နိုင်​ပါ​တယ်။

* ဤပို့စ် အတွက် Github ပေါ်ရှိ Source code နမူနာ များ

အကိုးအကားများ

[Cod13] CodeLite. Download CodeLite bundled with MinGW and wxWidgets. 2013.
url: https://sourceforge.net/projects/codelite/files/Releases/codelite-5.0/codelite-5.0.6213-mingw4.7.1-wx2.9.4.exe/download.

[Cod17] CodeLite Wiki. Compiling wxWidgets with MinGW. 2017.
url: http://codelite.org/Developers/BuildingWxWidgetsWin.

[Qt17] Qt. Licensing - Before you begin, make the right license choice. 2017.
url: https://www1.qt.io/licensing/.

[Zet13] ZetCode. wxWidgets tutorial. 2013.
url: http://zetcode.com/gui/wxwidgets/.

[wxW12] wxWiki. WxWidgets Compared To Other Toolkits. 2012.
url: https://wiki.wxwidgets.org/WxWidgets_Compared_To_Other_Toolkits.

[wxW14] wxWiki. Compiling and getting started. 2014.
url: https://wiki.wxwidgets.org/Compiling_and_getting_started.

[wxW15a] wxWiki. Bindings. 2015.
url: https://wiki.wxwidgets.org/Bindings.

[wxW15b] wxWiki. Microsoft Visual C++ Guide. 2015.
url: https://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide.

[wxW98] wxWidgets. wxWindows Library Licence. 1998.
url: https://www.wxwidgets.org/about/licence/.

Related post: