Bagikan melalui


Tentang Kontrol Statis

Aplikasi sering menggunakan kontrol statis untuk memberi label kontrol lain atau untuk memisahkan sekelompok kontrol. Meskipun kontrol statis adalah jendela anak, kontrol tidak dapat dipilih. Oleh karena itu, mereka tidak dapat menerima fokus keyboard dan tidak dapat memiliki antarmuka keyboard. Kontrol statis yang memiliki gaya SS_NOTIFY menerima input mouse, memberi tahu jendela induk saat pengguna mengklik atau mengklik dua kali kontrol. Kontrol statis milik kelas jendela STATIK.

Meskipun kontrol statis dapat digunakan dalam jendela tumpang tindih, pop-up, dan anak, kontrol statis dirancang untuk digunakan dalam kotak dialog, di mana sistem menstandarkan perilaku mereka. Dengan menggunakan kontrol statis di luar kotak dialog, pengembang meningkatkan risiko bahwa aplikasi mungkin berperilaku dengan cara yang tidak biasa. Biasanya, pengembang menggunakan kontrol statis dalam kotak dialog atau menggunakan gaya SS_OWNERDRAW untuk membuat kontrol statis yang disesuaikan.

Topik berikut dibahas di bagian ini.

Tipe Kontrol Statis

Ada empat jenis kontrol statis. Setiap jenis memiliki satu atau beberapa Gaya Kontrol Statis.

Kontrol Statis Grafis Sederhana

Kontrol statis grafis sederhana menampilkan bingkai atau persegi panjang yang diisi. Bingkai dapat digambar dalam sejumlah gaya, termasuk hitam, abu-abu, atau putih. Selain itu, bingkai dapat digambar dengan gaya terukir untuk memberinya tampilan tiga dimensi. Gaya bingkai termasuk SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME, SS_ETCHEDHORZ, SS_ETCHEDVERT, dan SS_ETCHEDFRAME.

Persegi panjang dapat diisi dengan warna dalam salah satu dari tiga gaya: hitam, abu-abu, atau putih. Gaya ini didefinisikan oleh konstanta SS_BLACKRECT, SS_GRAYRECT, dan SS_WHITERECT.

Gaya grafik tidak dapat digabungkan.

Kontrol Statis Teks

Kontrol statis teks menampilkan teks dalam persegi dalam salah satu dari lima gaya:

  • rata kiri tanpa pembungkus kata
  • rata kiri dengan pembungkus kata
  • dipusatkan
  • rata kanan
  • sederhana

Gaya ini didefinisikan oleh konstanta SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT, dan SS_SIMPLE. Sistem mengatur ulang teks dalam kontrol ini dengan cara yang telah ditentukan sebelumnya, kecuali untuk teks "sederhana", yang tidak diatur ulang.

Aplikasi dapat mengubah teks dalam kontrol statis teks kapan saja dengan menggunakan fungsi SetWindowText atau pesan WM_SETTEXT.

Sistem menampilkan teks sebanyak mungkin dalam kontrol statis dan klip apa pun yang tidak pas. Untuk menghitung ukuran kontrol yang sesuai, ambil metrik font untuk teks. Untuk informasi selengkapnya tentang font dan metrik font, lihat Font dan Teks.

Secara default, teks jendela untuk kontrol statis, seperti untuk kontrol lain, dapat berisi ampersand yang menentukan karakter berikut sebagai kunci pintasan untuk kontrol (atau, dalam kasus sebagian besar kontrol statis, untuk kontrol yang dilabelinya, yang merupakan kontrol berikutnya dalam urutan tab). Jika Anda ingin menampilkan ampersand dalam teks daripada menggunakannya untuk menentukan pintasan, sertakan gaya SS_NOPREFIX.

Kontrol Statis Gambar

Kontrol statis gambar dapat menampilkan bitmap, ikon (termasuk ikon animasi), atau metafiles yang ditingkatkan. Jenis grafik yang ditampilkan kontrol statis tertentu bergantung pada gaya kontrol: SS_BITMAP, SS_ICON, atau SS_ENHMETAFILE. Aplikasi menentukan gaya saat membuat kontrol dan juga menentukan handel ke bitmap, ikon, atau metafile agar kontrol ditampilkan. Setelah kontrol dibuat, aplikasi dapat mengaitkan grafik yang berbeda dengan kontrol dengan mengirimkannya pesan STM_SETIMAGE , menentukan handel ke objek grafik baru. Aplikasi dapat mengambil handel ke objek grafis yang saat ini terkait dengan kontrol statis dengan mengirimkannya pesan STM_GETIMAGE . Aplikasi mengirim pesan ke kontrol statis dengan menggunakan fungsi SendDlgItemMessage.

Kontrol Statis Yang Digambar Pemilik

Dengan menggunakan gaya SS_OWNERDRAW, aplikasi dapat bertanggung jawab untuk melukis kontrol statis. Jendela induk kontrol statis yang digambar pemilik (pemiliknya) menerima pesan WM_DRAWITEM setiap kali kontrol statis perlu dicat. Pesan menyertakan penunjuk ke struktur DRAWITEMSTRUCT yang berisi informasi yang digunakan jendela pemilik saat menggambar kontrol.

Pemrosesan Pesan Default Kontrol Statis

Prosedur jendela untuk kelas jendela kontrol statis yang telah ditentukan sebelumnya melakukan pemrosesan default untuk semua pesan yang tidak diproses oleh prosedur kontrol statis. Saat kontrol statis mengembalikan FALSE untuk pesan apa pun, prosedur jendela yang telah ditentukan sebelumnya memeriksa pesan dan melakukan tindakan default yang dijelaskan dalam tabel berikut. Dalam tabel, kontrol statis teks adalah kontrol statis dengan gaya SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT, atau SS_SIMPLE.

Pesan Tindakan default
WM_CREATE Memuat objek grafik dan mengukur jendela ke ukuran objek, untuk kontrol statis grafis. Tidak mengambil tindakan untuk kontrol statis lainnya.
WM_DESTROY Membebaskan dan menghancurkan objek grafis apa pun, untuk kontrol statis grafis. Tidak mengambil tindakan untuk kontrol statis lainnya.
WM_ENABLE Mengecat ulang kontrol statis yang terlihat.
WM_ERASEBKGND Mengembalikan TRUE, menunjukkan kontrol menghapus latar belakang.
WM_GETDLGCODE Mengembalikan DLGC_STATIC.
WM_GETFONT Mengembalikan handel ke font untuk kontrol statis teks.
WM_GETTEXT Mengembalikan jumlah karakter yang disalin.
WM_GETTEXTLENGTH Mengembalikan panjang, dalam karakter, dari teks untuk kontrol statis teks.
WM_LBUTTONDBLCLK Mengirim jendela induk kode pemberitahuan STN_DBLCLK jika gaya kontrol SS_NOTIFY.
WM_LBUTTONDOWN Mengirim jendela induk kode pemberitahuan STN_CLICKED jika gaya kontrol SS_NOTIFY.
WM_NCLBUTTONDBLCLK Mengirim jendela induk kode pemberitahuan STN_DBLCLK jika gaya kontrol SS_NOTIFY.
WM_NCLBUTTONDOWN Mengirim jendela induk kode pemberitahuan STN_CLICKED jika gaya kontrol SS_NOTIFY.
WM_NCHITTEST Mengembalikan HTCLIENT jika gaya kontrol SS_NOTIFY; jika tidak, mengembalikan HTTRANSPARENT.
WM_PAINT Mengecat ulang kontrol.
WM_SETFONT Mengatur font dan repaint untuk kontrol statis teks.
WM_SETTEXT Mengatur teks dan pengecatan ulang untuk kontrol statis teks.

 

Prosedur jendela yang telah ditentukan sebelumnya meneruskan semua pesan lain ke DefWindowProc untuk pemrosesan default.