Sunday, April 21, 2013

CStatic Members

Jika ingin membuat CStatic object maka operasi(method) yang bisa dilakukan pada object tersebut. Namun sebelum melangkah lebih jauh, object tersebut harus di create dulu dengan fungsi :
virtual BOOL Create(
                                   LPCTSTR lpszText,
                                   DWORD dwStyle,
                                   const RECT& rect,
                                   CWnd* pParentWnd,
                                  UINT nID = 0xFFFF);
Pada method tersebut, lpszText berfungsi untuk menspesifikasikan text yang akan disimpan pada control, jika tidak ada maka tidak akan ada text yang muncul hehe... :D
dwStyle berguna untuk menspesifikasikan kontrol statik pada window style. Kontrol statik di sini contohnya SS_BITMAP, SS_CENTER, SS_ICON, SS_RIGHT, dsb, keterangannya lengkapnya bisa dilihat di msdn.
kemudian variabel rect menspesifikasikan posisi dan ukuran dari kontrol statik. rect ini dapat berupa RECT structure ataupun CRECT object.
pParentWnd menunjukkan CStatic parent window yang biasanya adalah CDialog. pParentWnd ini biasanya bernilai NULL.
terakhir adalah nID yang menunjukkan ID pada kontrol statiknya.

Nah setelah objectnya di create, maka method yang bisa digunakan yaitu :

  • HBITMAP GetBitmap() const; Method ini mengembalikan handle bitmap yang sebelumnya diset oleh SetBitmap method. Contohnya, misalkan dbuat program berikut,

CStatic myStatic;
/*kita create dulu*/
myStatic.Create(_T("my Static Bitmap"),WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50),NULL);
/*nah jika tidak ada bitmap yang didefinisikan untuk kontrol statik, maka buat bitmap ke system kemudian close bitmapnya*/
if(myStatic.GetBitmap() == NULL)
{ myStatic.SetBitmap(::LoadBitmap(NULL,MAKEINTRESOURCE(OBM_CLOSE)));
}

  • HCURSOR GetCursor(); Method ini menghandle current cursor yang sebelumnya diset oleh SetCursor method. Jadi method ini akan bernilai NULL jika sebelumnya belum ada cursor yang di set, perlu diketahui bahwa method ini butuh header afxwin.h. Contoh :
CStatic myStatic;
myStatic.Create(_T("My Static lagi hehe",WS_CHILD|WS_VISIBLE|SS_ICON|SS_CENTERIMAGE, Crect(10,10,150,50),NULL);
/*jika blm ada image yang didefinisikan untuk static control, maka buat image ke system arrow dan question mark cursor*/
if(myStatic.GetCursor()==NULL)
{ myStatic.SetCursor(::LoadCursor(NULL,IDC_HELP));
}
  • HENMETAFILE GetEnhMetaFile() const; Method ini mengembalikan handle dari enhanced metafile yang sebelumnya diset oleh SetEnhMetaFile method. Method ini mengembalikan nilai NULL jika blm ada metafile yang telah diset. Sama seperti method sebelumnya, method ini juga butuh header afxwin.h. Contoh pemakaiannya :
CStatic myPoipo;
myPoipo.Create(_T("Poipo Clan"),WC_CHILD|WS_VISIBLE|SS_ENHMETAFILE|SS_CENTERIMAGE, CRect(10,10,150,50), NULL);
/*jika blm ada image maka definisikan image ke poipo.emf*/
if(myPoipo.GetEnhMetaFile() ==NULL)
    myPoipo.SetEnhMetaFile(::GetEnhMetafile(_T("poipo.emf")));

  • HICON GetIcon() const; Method ini mengembalikan nilai handle dari icon yang sebelumnya diset oleh SetIcon. Requirementnya afxwin.h. Ex:
CStatic poipo;
poipo.Create(_T("poipo GetIcon"),WS_CHILD|WS_VISIBLE|SS_ICON|SS_CENTERIMAGE, CRect(10,10,150,50), NULL);
if(poipo.GetIcon() ==  NULL)
   poipo.SetIcon(::LoadIcon(NULL,IDI_ERROR));

  • HBITMAP SetBitmap(HBITMAP hBitmap);  Method ini mengembalikan handle bitmap yang sebelumnya berhubungan dengan static control. Parameter hBitmap  pada method ini menunjukkan handle dari bitmap yang akan digambar pada static control. Bitmap akan secara otomatis digambar dari static control. Secara defult, bitmap tersebut akan ditampilkan dalam upper-left corner dan static control akan menyesuaikan ke ukuran dari bitmap. Kita dapat menggunakan berbagai macam ukuran window dan styles control static, tapi harus selalu menggunakan style SS_BITMAP dan SS_CENTERIMAGE. Ex:
CStatic hyosoka;
hyosoka.Create(_T("Hyosoka"),WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50),NULL);
if(hyosoka.GetBitmap == NULL)
   hyosoka.SetBitmap(::LoadBitmap(NULL,MAKEINTRESOURCE(OBM_CLOSE)));

  • HCURSOR SetCursor(HCURSOR hCursor); Method ini menghandle cursor yg akan digambar pada static control yang ditandai oleh parameter hCursor. Cursor akan secara otomatis digambar pada static control. Secara default, akan berbentuk upper-left corner dan akan disesuaikan dengan ukuran cursor. Kita dapat menggunakan beberapa style yang berbeda, namun harus menggunakan style SS_ICON & SS_CENTERIMAGE. Ex:
CStatic myCursor;
myCursor.Create(_T("My Poipo Cursor"),WS_CHILD|WS_VISIBLE|SS_ICON|SS_CENTERIMAGE, CRect(10,10,150,50),NULL);
if(myCursor.GetCursor() == NULL)
   myCursor.SetCursor(::LoadCursor(NULL,IDC_HELP));

  • HENMETAFILE SetEnhMetaFile(HENMETAFILE hMetaFile); Method ini menspesifikasikan metafile yang akan ditampilkan pada static control. Style wajib yang harus digunakan dalam method ini yaitu SS_ENHMETAFILE. Ex:
CStatic myMetaFile;
myMetaFile.Create(_T("myMetaFile"),WS_CHILD|WS_VISIBLE|SS_ENHMETAFILE|SS_CENTERIMAGE, CRect(10,10,150,50), NULL);
if (myMetaFile.GetEnhMetaFile() == NULL)
  myMetaFile.SetEnhMetaFile(::GetEnhMetaFile(_T("myemf.emf"));

  • HICON SetIcon(HICON hIcon); Method ini menunjukkan icon yang akan ditampilkan pada static control. Style window yang harus digunakan yaitu SS_ICON dan SS_CENTERIMAGE. Ex:
CStatic myIcon;
myIcon.Create(_T("My Static Icon"), WS_CHILD|WS_VISIBLE|SS_ICON|SS_CENTERIMAGE, CRect(10,10,150,50), NULL);
if(myIcon.GetIcon() == NULL)
  myIcon.SetIcon(::LoadIcon(NULL,IDI_ERROR));

  • virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); Method ini bersifat overridables (ada fitur virtual). Parameter lpDrawItemStruct berguna sebagai pointer ke DRAWITEMSTRUCT structure. Structure tersebut berisi informasi tentang item yang akan digambar dan tipe penggambaran yang dibutuhkan. Style window yang digunakan yaitu SS_OWNERDRAW.

No comments:

Post a Comment