Saturday, 18 August 2012

Win32: Menampilkan Teks Sederhana


Tulisan ini (mungkin :P) merupakan lanjutan dari:
Win32: Menggambar Dengan WM_PAINT (1)

Jika pada artikel sebelumnya kita membuat sebuah garis-garis yang indah hehehe, maka sekarang kita akan menampilkan sebuah teks. Dengan menggunakan fungsi yang telah disediakan maka prosesnya menjadi lebih mudah. Langkah pertama adalah membuat project Win32 yang baru, File -> New -> Project -> Win32 GUI Project -> Go. Pilih Frame Based sebagai tipe dasarnya lalu lanjutkan sampai finish. Sampai sini kita telah memiliki jendela sederhana, cukup untuk menampung teks yang akan kita tampilkan. Tambahkan header string ( #include <string> ) setelah header windows . Dan masukkan beberapa kode (lihat potongan kode dibawah), sehingga tampak seperti berikut:


#include <windows.h>

#include <string>

...
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

    //DC = Device Context
    HDC hDC;
    PAINTSTRUCT Ps;
 
    switch (message)                  /* handle the messages */
    {
        case WM_PAINT:{
   
            hDC = BeginPaint(hwnd,&Ps);
            std::string teks = "Contoh Teks ................!";

            //BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cbString);
            TextOut(hDC, 50, 50, teks.c_str(),teks.length());  //teks 1
            TextOut(hDC, 50, 70, "Contoh Teks",10);    //teks 2

            //COLORREF SetTextColor(HDC hdc, COLORREF crColor);
            SetTextColor(hDC,RGB(255,25,5));
            TextOut(hDC, 50, 90, "Contoh Teks....",14);   //teks 3

            COLORREF _Biru = RGB(5,25,255);
            SetTextColor(hDC,_Biru);
            TextOut(hDC, 50, 110, "Contoh Teks..",18);   //teks 4

            EndPaint(hwnd,&Ps);
            break;
        }

        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}
...

Dengan penggunaan string mempermudahkan dalam menampilkan teks dengan TextOut(). Perhatikan baris untuk teks 1 dan teks 2, pada parameter terakhir kita harus menentukan berapa banyak karakter yang akan ditampilkan. Pada teks 2, kita isi parameter keempat dengan kalimat "Contoh Teks" (tanpa tanda kutip). Jumlah karakter yang harus ditampilkan adalah 11, tetapi karena panjangnya hanya diisi 10 (lihat baris teks 2, parameter terakhir) maka karakter terkahir yaitu 's' tidak dapat ditampilkan. Suatu ketika kita ingin menampilkan kalimat yang amat panjang dan memasukkan angka besar sembarang, misal 100 atau 200. Lalu bagaimana hasilnya? Maka akan akan muncul karakter-karakter aneh setelahnya (seperti pada teks 3 dan teks 4). Untuk itu lah penggunaan tipe data string akan membantu kita hehehe. Dengan menggunakan teks.length() kita dapat memperoleh banyaknya karakter.

 Selain itu kita juga dapat menampilkan karakter dengan warna yang telah ditentukan. Dengan menggunakan SetTextColor(), kita isi parameter kedua dengan fungsi RGB(Red,Green,Blue) atau variabel bertipe COLORREF. File project untuk artikel ini dapat anda download dari Link ini. So, Happy Coding!

 - krofz
 

back to top

back to top