Membuat fungsiWindowExA (winuser.h)

Membuat jendela tumpang tindih, pop-up, atau anak dengan gaya jendela yang diperluas; jika tidak, fungsi ini identik dengan fungsi CreateWindow . Untuk informasi selengkapnya tentang membuat jendela dan untuk deskripsi lengkap parameter lain dari CreateWindowEx, lihat CreateWindow.

Sintaks

HWND CreateWindowExA(
  [in]           DWORD     dwExStyle,
  [in, optional] LPCSTR    lpClassName,
  [in, optional] LPCSTR    lpWindowName,
  [in]           DWORD     dwStyle,
  [in]           int       X,
  [in]           int       Y,
  [in]           int       nWidth,
  [in]           int       nHeight,
  [in, optional] HWND      hWndParent,
  [in, optional] HMENU     hMenu,
  [in, optional] HINSTANCE hInstance,
  [in, optional] LPVOID    lpParam
);

Parameter

[in] dwExStyle

Jenis: DWORD

Gaya jendela yang diperluas dari jendela yang sedang dibuat. Untuk daftar nilai yang mungkin, lihat Gaya Jendela yang Diperluas.

[in, optional] lpClassName

Jenis: LPCTSTR

String null-terminated atau atom kelas yang dibuat oleh panggilan sebelumnya ke fungsi RegisterClass atau RegisterClassEx . Atom harus dalam kata urutan rendah dari lpClassName; kata urutan tinggi harus nol. Jika lpClassName adalah string, itu menentukan nama kelas jendela. Nama kelas dapat berupa nama apa pun yang terdaftar di RegisterClass atau RegisterClassEx, asalkan modul yang mendaftarkan kelas juga merupakan modul yang membuat jendela. Nama kelas juga dapat menjadi salah satu nama kelas sistem yang telah ditentukan sebelumnya.

[in, optional] lpWindowName

Jenis: LPCTSTR

Nama jendela. Jika gaya jendela menentukan bilah judul, judul jendela yang ditujukan ke lpWindowName ditampilkan di bilah judul. Saat menggunakan CreateWindow untuk membuat kontrol, seperti tombol, kotak centang, dan kontrol statis, gunakan lpWindowName untuk menentukan teks kontrol. Saat membuat kontrol statis dengan gaya SS_ICON , gunakan lpWindowName untuk menentukan nama atau pengidentifikasi ikon. Untuk menentukan pengidentifikasi, gunakan sintaks "#num".

[in] dwStyle

Jenis: DWORD

Gaya jendela yang sedang dibuat. Parameter ini bisa menjadi kombinasi dari nilai gaya jendela, ditambah gaya kontrol yang ditunjukkan di bagian Keterangan.

[in] X

Jenis: int

Posisi horizontal awal jendela. Untuk jendela tumpang tindih atau pop-up, parameter x adalah koordinat x awal sudut kiri atas jendela, dalam koordinat layar. Untuk jendela anak, x adalah koordinat x dari sudut kiri atas jendela relatif terhadap sudut kiri atas area klien jendela induk. Jika x diatur ke CW_USEDEFAULT, sistem memilih posisi default untuk sudut kiri atas jendela dan mengabaikan parameter y . CW_USEDEFAULT hanya berlaku untuk jendela yang tumpang tindih; jika ditentukan untuk jendela pop-up atau anak, parameter x dan y diatur ke nol.

[in] Y

Jenis: int

Posisi vertikal awal jendela. Untuk jendela yang tumpang tindih atau pop-up, parameter y adalah koordinat y awal sudut kiri atas jendela, dalam koordinat layar. Untuk jendela anak, y adalah koordinat y awal dari sudut kiri atas jendela anak relatif terhadap sudut kiri atas area klien jendela induk. Untuk kotak daftar y adalah koordinat y awal dari sudut kiri atas area klien kotak daftar relatif terhadap sudut kiri atas area klien jendela induk.

Jika jendela yang tumpang tindih dibuat dengan set bit gaya WS_VISIBLE dan parameter x diatur ke CW_USEDEFAULT, parameter y menentukan bagaimana jendela ditampilkan. Jika parameter yCW_USEDEFAULT, manajer jendela memanggil ShowWindow dengan bendera SW_SHOW setelah jendela dibuat. Jika parameter y adalah beberapa nilai lain, maka manajer jendela memanggil ShowWindow dengan nilai tersebut sebagai parameter nCmdShow .

[in] nWidth

Jenis: int

Lebar, di unit perangkat, dari jendela. Untuk jendela yang tumpang tindih, nWidth adalah lebar jendela, dalam koordinat layar, atau CW_USEDEFAULT. Jika nWidthCW_USEDEFAULT, sistem memilih lebar dan tinggi default untuk jendela; lebar default meluas dari koordinat x awal ke tepi kanan layar; tinggi default meluas dari koordinat y awal ke bagian atas area ikon. CW_USEDEFAULT hanya berlaku untuk jendela yang tumpang tindih; jika CW_USEDEFAULT ditentukan untuk jendela pop-up atau anak, parameter nWidth dan nHeight diatur ke nol.

[in] nHeight

Jenis: int

Tinggi, di unit perangkat, dari jendela. Untuk jendela yang tumpang tindih, nHeight adalah tinggi jendela, dalam koordinat layar. Jika parameter nWidth diatur ke CW_USEDEFAULT, sistem mengabaikan nHeight.

[in, optional] hWndParent

Jenis: HWND

Handel ke jendela induk atau pemilik jendela yang sedang dibuat. Untuk membuat jendela anak atau jendela yang dimiliki, berikan handel jendela yang valid. Parameter ini bersifat opsional untuk jendela pop-up.

Untuk membuat jendela khusus pesan, berikan HWND_MESSAGE atau handel ke jendela khusus pesan yang ada.

[in, optional] hMenu

Jenis: HMENU

Handel ke menu, atau menentukan pengidentifikasi jendela anak, tergantung pada gaya jendela. Untuk jendela tumpang tindih atau pop-up, hMenu mengidentifikasi menu yang akan digunakan dengan jendela; bisa NULL jika menu kelas akan digunakan. Untuk jendela anak, hMenu menentukan pengidentifikasi jendela anak, nilai bilangan bulat yang digunakan oleh kontrol kotak dialog untuk memberi tahu induknya tentang peristiwa. Aplikasi menentukan pengidentifikasi jendela anak; harus unik untuk semua jendela anak dengan jendela induk yang sama.

[in, optional] hInstance

Jenis: HINSTANCE

Handel ke instans modul yang akan dikaitkan dengan jendela.

[in, optional] lpParam

Jenis: LPVOID

Penunjuk ke nilai yang akan diteruskan ke jendela melalui struktur CREATESTRUCT (anggota lpCreateParams ) yang ditunjukkan oleh param lParam dari pesan WM_CREATE . Pesan ini dikirim ke jendela yang dibuat oleh fungsi ini sebelum kembali.

Jika aplikasi memanggil CreateWindow untuk membuat jendela klien MDI, lpParam harus menunjuk ke struktur CLIENTCREATESTRUCT . Jika jendela klien MDI memanggil CreateWindow untuk membuat jendela anak MDI, lpParam harus menunjuk ke struktur MDICREATESTRUCT . lpParam mungkin NULL jika tidak ada data tambahan yang diperlukan.

Mengembalikan nilai

Jenis: HWND

Jika fungsi berhasil, nilai yang dikembalikan adalah handel ke jendela baru.

Jika fungsi gagal, nilai yang dikembalikan adalah NULL. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Fungsi ini biasanya gagal karena salah satu alasan berikut:

  • nilai parameter yang tidak valid
  • kelas sistem didaftarkan oleh modul yang berbeda
  • Hook WH_CBT diinstal dan mengembalikan kode kegagalan
  • jika salah satu kontrol dalam templat dialog tidak terdaftar, atau prosedur jendela jendelanya gagal WM_CREATE atau WM_NCCREATE

Keterangan

Fungsi CreateWindowEx mengirim pesan WM_NCCREATE, WM_NCCALCSIZE, dan WM_CREATE ke jendela yang sedang dibuat.

Jika jendela yang dibuat adalah jendela anak, posisi defaultnya berada di bagian bawah urutan Z. Jika jendela yang dibuat adalah jendela tingkat atas, posisi defaultnya berada di bagian atas urutan Z (tetapi di bawah semua jendela paling atas kecuali jendela yang dibuat sendiri paling atas).

Untuk informasi tentang mengontrol apakah Taskbar menampilkan tombol untuk jendela yang dibuat, lihat Mengelola Tombol Bilah Tugas.

Untuk informasi tentang menghapus jendela, lihat fungsi DestroyWindow .

Kelas kontrol yang telah ditentukan sebelumnya berikut dapat ditentukan dalam parameter lpClassName . Perhatikan gaya kontrol terkait yang dapat Anda gunakan dalam parameter dwStyle .

Kelas Makna
TOMBOL Menunjuk jendela anak persegi kecil yang mewakili tombol yang dapat diklik pengguna untuk mengaktifkan atau menonaktifkannya. Kontrol tombol dapat digunakan sendiri atau dalam grup, dan dapat diberi label atau muncul tanpa teks. Kontrol tombol biasanya mengubah tampilan saat pengguna mengkliknya. Untuk informasi selengkapnya, lihat Tombol.

Untuk tabel gaya tombol yang bisa Anda tentukan dalam parameter dwStyle , lihat Gaya Tombol.

KOTAK KOMBO Menunjuk kontrol yang terdiri dari kotak daftar dan bidang pilihan yang mirip dengan kontrol edit. Saat menggunakan gaya ini, aplikasi harus menampilkan kotak daftar setiap saat atau mengaktifkan kotak daftar drop-down. Jika kotak daftar terlihat, mengetik karakter ke dalam bidang pilihan menyoroti entri kotak daftar pertama yang cocok dengan karakter yang ditik. Sebaliknya, memilih item dalam kotak daftar menampilkan teks yang dipilih di bidang pilihan. Untuk informasi selengkapnya, lihat Kotak Kombo.

Untuk tabel gaya kotak kombo yang bisa Anda tentukan dalam parameter dwStyle , lihat Gaya Kotak Kombo.

MENGEDIT Menunjuk jendela anak persegi panjang tempat pengguna dapat mengetik teks dari keyboard. Pengguna memilih kontrol dan memberinya fokus keyboard dengan mengkliknya atau memindahkannya dengan menekan tombol TAB. Pengguna dapat mengetik teks saat kontrol edit menampilkan tanda sisipan berkedip; gunakan mouse untuk memindahkan kursor, memilih karakter yang akan diganti, atau memosisikan kursor untuk menyisipkan karakter; atau gunakan kunci untuk menghapus karakter. Untuk informasi selengkapnya, lihat Edit Kontrol.

Untuk tabel gaya kontrol edit yang bisa Anda tentukan dalam parameter dwStyle , lihat Edit Gaya Kontrol.

KOTAK DAFTAR Menunjuk daftar string karakter. Tentukan kontrol ini setiap kali aplikasi harus menyajikan daftar nama, seperti nama file, tempat pengguna dapat memilih. Pengguna dapat memilih string dengan mengkliknya. String yang dipilih disorot, dan pesan pemberitahuan diteruskan ke jendela induk. Untuk informasi selengkapnya, lihat Kotak Daftar.

Untuk tabel gaya kotak daftar yang bisa Anda tentukan dalam parameter dwStyle , lihat Gaya Kotak Daftar.

MDICLIENT Menunjuk jendela klien MDI. Jendela ini menerima pesan yang mengontrol jendela anak aplikasi MDI. Bit gaya yang direkomendasikan WS_CLIPCHILDREN dan WS_CHILD. Tentukan gaya WS_HSCROLL dan WS_VSCROLL untuk membuat jendela klien MDI yang memungkinkan pengguna untuk menggulir jendela anak MDI ke tampilan. Untuk informasi selengkapnya, lihat Beberapa Antarmuka Dokumen.
RichEdit Menunjuk kontrol Microsoft Rich Edit 1.0. Jendela ini memungkinkan pengguna melihat dan mengedit teks dengan pemformatan karakter dan paragraf, dan dapat menyertakan objek Model Objek Komponen (COM) yang disematkan. Untuk informasi selengkapnya, lihat Kontrol Edit Kaya.

Untuk tabel gaya kontrol edit kaya yang bisa Anda tentukan dalam parameter dwStyle , lihat Gaya Kontrol Edit Kaya.

RICHEDIT_CLASS Menunjuk kontrol Microsoft Rich Edit 2.0. Kontrol ini memungkinkan pengguna melihat dan mengedit teks dengan pemformatan karakter dan paragraf, dan dapat menyertakan objek COM yang disematkan. Untuk informasi selengkapnya, lihat Kontrol Edit Kaya.

Untuk tabel gaya kontrol edit kaya yang bisa Anda tentukan dalam parameter dwStyle , lihat Gaya Kontrol Edit Kaya.

SCROLLBAR Menunjuk persegi panjang yang berisi kotak gulir dan memiliki panah arah di kedua ujungnya. Bilah gulir mengirimkan pesan pemberitahuan ke jendela induknya setiap kali pengguna mengklik kontrol. Jendela induk bertanggung jawab untuk memperbarui posisi kotak gulir, jika perlu. Untuk informasi selengkapnya, lihat Bilah Gulir.

Untuk tabel gaya kontrol bilah gulir yang bisa Anda tentukan dalam parameter dwStyle , lihat Gaya Kontrol Bilah Gulir.

STATIS Menunjuk bidang teks, kotak, atau persegi panjang sederhana yang digunakan untuk memberi label, kotak, atau memisahkan kontrol lainnya. Kontrol statis tidak mengambil input dan tidak memberikan output. Untuk informasi selengkapnya, lihat Kontrol Statis.

Untuk tabel gaya kontrol statis yang bisa Anda tentukan dalam parameter dwStyle , lihat Gaya Kontrol Statis.

 

Nilai WS_EX_NOACTIVATE untuk dwExStyle mencegah aktivasi latar depan oleh sistem. Untuk mencegah aktivasi antrean saat pengguna mengklik jendela, Anda harus memproses pesan WM_MOUSEACTIVATE dengan tepat. Untuk membawa jendela ke latar depan atau mengaktifkannya secara terprogram, gunakan SetForegroundWindow atau SetActiveWindow. Mengembalikan FALSE ke WM_NCACTIVATE mencegah jendela kehilangan aktivasi antrean. Namun, nilai yang dikembalikan diabaikan pada waktu aktivasi.

Dengan set WS_EX_COMPOSITED , semua turunan jendela mendapatkan urutan lukisan bawah ke atas menggunakan buffering ganda. Urutan lukisan bawah ke atas memungkinkan jendela turunan memiliki efek translusensi (alfa) dan transparansi (kunci warna), tetapi hanya jika jendela turunan juga memiliki set bit WS_EX_TRANSPARENT . Buffering ganda memungkinkan jendela dan keturunannya dicat tanpa berkedot.

Contoh

Kode sampel berikut mengilustrasikan penggunaan CreateWindowExA.

BOOL Create(
        PCWSTR lpWindowName,
        DWORD dwStyle,
        DWORD dwExStyle = 0,
        int x = CW_USEDEFAULT,
        int y = CW_USEDEFAULT,
        int nWidth = CW_USEDEFAULT,
        int nHeight = CW_USEDEFAULT,
        HWND hWndParent = 0,
        HMENU hMenu = 0
        )
    {
        WNDCLASS wc = {0};

        wc.lpfnWndProc   = DERIVED_TYPE::WindowProc;
        wc.hInstance     = GetModuleHandle(NULL);
        wc.lpszClassName = ClassName();

        RegisterClass(&wc);

        m_hwnd = CreateWindowEx(
            dwExStyle, ClassName(), lpWindowName, dwStyle, x, y,
            nWidth, nHeight, hWndParent, hMenu, GetModuleHandle(NULL), this
            );

        return (m_hwnd ? TRUE : FALSE);
    }

Catatan

Header winuser.h mendefinisikan CreateWindowEx sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (termasuk Windows.h)
Pustaka User32.lib
DLL User32.dll
Set API ext-ms-win-ntuser-window-l1-1-0 (diperkenalkan dalam Windows 8)

Lihat juga

Tentang Beberapa Antarmuka Dokumen

CLIENTCREATESTRUCT

CREATESTRUCT

Konseptual

CreateWindow

DestroyWindow

EnableWindow

Sumber Daya Lain

Referensi

RegisterClass

RegisterClassEx

SetActiveWindow

SetForegroundWindow

SetWindowLong

SetWindowPos

ShowWindow

WM_CREATE

WM_NCCALCSIZE

WM_NCCREATE

WM_PAINT

WM_PARENTNOTIFY

Windows