Tata Letak Dinamis
Dengan MFC di Visual Studio 2015, Anda dapat membuat dialog yang dapat diubah ukuran penggunanya, dan Anda dapat mengontrol cara tata letak menyesuaikan dengan perubahan ukuran. Misalnya, Anda dapat melampirkan tombol di bagian bawah dialog ke tepi bawah sehingga selalu berada di bagian bawah. Anda juga dapat menyiapkan kontrol tertentu seperti kotak daftar, kotak edit, dan bidang teks untuk diperluas saat pengguna memperluas dialog.
Menentukan pengaturan tata letak dinamis untuk kotak dialog MFC
Saat pengguna mengubah ukuran dialog, kontrol dalam dialog dapat mengubah ukuran atau berpindah ke arah X dan Y. Perubahan ukuran atau posisi kontrol saat pengguna mengubah ukuran dialog disebut tata letak dinamis. Misalnya, berikut ini adalah dialog sebelum diubah ukurannya:
Setelah diubah ukurannya, area kotak daftar ditingkatkan untuk menampilkan lebih banyak item, dan tombol dipindahkan bersama dengan sudut kanan bawah:
Anda dapat mengontrol tata letak dinamis dengan menentukan detail untuk setiap kontrol di Editor Sumber Daya di IDE, atau Anda dapat melakukannya secara terprogram dengan mengakses CMFCDynamicLayout
objek untuk kontrol tertentu dan mengatur properti.
Mengatur properti tata letak dinamis di editor sumber daya
Anda dapat mengatur perilaku tata letak dinamis untuk kotak dialog tanpa harus menulis kode apa pun, dengan menggunakan editor sumber daya.
Untuk mengatur properti tata letak dinamis di editor sumber daya
Dengan proyek MFC terbuka, buka dialog yang ingin Anda kerjakan di editor dialog.
Pilih kontrol dan di jendela Properti (dalam Tampilan Kelas), atur properti tata letak dinamisnya. Bagian Tata Letak Dinamis di jendela Properti berisi properti Jenis Pemindahan, Jenis Ukuran, dan, tergantung pada nilai yang dipilih untuk properti tersebut, properti tertentu yang menentukan berapa banyak kontrol yang berpindah atau mengubah ukuran. Jenis Pemindahan menentukan bagaimana kontrol dipindahkan saat ukuran dialog diubah; Tipe Ukuran menentukan bagaimana kontrol diubah ukurannya sebagai ukuran dialog diubah. Jenis Pemindahan dan Tipe Ukuran mungkin Horizontal, Vertikal, Keduanya, atau Tidak Ada tergantung pada dimensi yang ingin Anda ubah secara dinamis. Horizontal adalah dimensi X; Vertikal adalah arah Y.
Jika Anda ingin kontrol seperti tombol berada pada ukuran tetap dan tetap berada di tempat di kanan bawah, seperti umum untuk tombol OK atau Batal , atur Jenis Ukuran ke Tidak Ada, dan atur Jenis Pemindahan ke Keduanya. Untuk nilai Memindahkan X dan Memindahkan Y di bawah Jenis Pemindahan, atur 100% untuk menyebabkan kontrol tetap jauh dari sudut kanan bawah.
Misalkan Anda juga memiliki kontrol yang ingin Anda perluas saat dialog diperluas. Biasanya, pengguna mungkin memperluas dialog untuk memperluas kotak edit multibaris untuk meningkatkan ukuran area teks, atau mereka mungkin memperluas kontrol daftar untuk melihat lebih banyak data. Untuk kasus ini, atur Jenis Ukuran ke Keduanya, dan atur Jenis Pemindahan ke tidak ada. Kemudian, atur nilai Ukuran X dan Ukuran Y ke 100.
Bereksperimen dengan nilai lain yang mungkin masuk akal untuk kontrol Anda. Dialog dengan kotak teks satu baris mungkin memiliki Tipe Ukuran yang diatur ke Horizontal saja, misalnya.
Mengatur properti tata letak dinamis secara terprogram
Prosedur sebelumnya berguna untuk menentukan properti tata letak dinamis untuk dialog pada waktu desain, tetapi jika Anda ingin mengontrol tata letak dinamis saat runtime, Anda dapat mengatur properti tata letak dinamis secara terprogram.
Untuk mengatur properti tata letak dinamis secara terprogram
Temukan atau buat tempat di kode implementasi kelas dialog tempat Anda ingin menentukan tata letak dinamis untuk dialog. Misalnya, Anda mungkin ingin menambahkan metode seperti
AdjustLayout
dalam dialog Anda, dan memanggilnya dari tempat di mana tata letak perlu diubah. Anda mungkin terlebih dahulu memanggil ini dari konstruktor, atau setelah membuat perubahan pada dialog.Untuk dialog, panggil GetDynamicLayout, metode
CWnd
kelas .GetDynamicLayout
mengembalikan penunjuk keCMFCDynamicLayout
objek.CMFCDynamicLayout* dynamicLayout = pDialog->GetDynamicLayout();
Untuk kontrol pertama yang ingin Anda tambahkan perilaku dinamisnya, gunakan metode statis pada kelas tata letak dinamis untuk membuat struktur Move Pengaturan yang mengodekan cara kontrol harus disesuaikan. Anda melakukan ini dengan terlebih dahulu memilih metode statis yang sesuai: CMFCDynamicLayout::MoveHorizontal, CMFCDynamicLayout::MoveVertical, CMFCDynamicLayout::MoveNone, atau CMFCDynamicLayout::MoveHorizontalAndVertical. Anda meneruskan persentase untuk aspek horizontal dan/atau vertikal pemindahan. Semua metode statis ini mengembalikan objek Move Pengaturan yang baru dibuat yang dapat Anda gunakan untuk menentukan perilaku pemindahan kontrol.
Perlu diingat bahwa 100 berarti bergerak persis sebanyak ukuran perubahan dialog, yang menyebabkan tepi kontrol tetap dari batas baru.
MoveSettings moveSettings = CMFCDynamicLayout::MoveHorizontal(100);
Lakukan hal yang sama untuk perilaku ukuran, yang menggunakan jenis Ukuran Pengaturan. Misalnya, untuk menentukan bahwa kontrol tidak berubah ukuran saat dialog mengubah ukuran, gunakan kode berikut:
SizeSettings sizeSettings = CMFCDynamicLayout::SizeNone();
Tambahkan kontrol ke manajer tata letak dinamis menggunakan metode CMFCDynamicLayout::AddItem . Ada dua kelebihan beban untuk berbagai cara menentukan kontrol yang diinginkan. Satu mengambil handel jendela kontrol (HWND), dan yang lain mengambil ID kontrol.
dynamicLayout->AddItem(hWndControl, moveSettings, sizeSettings);
Ulangi untuk setiap kontrol yang perlu dipindahkan atau diubah ukurannya.
Jika perlu, dapat menggunakan metode CMFCDynamicLayout::HasItem untuk menentukan apakah kontrol sudah ada di daftar kontrol yang mengalami perubahan tata letak dinamis, atau metode CMFCDynamicLayout::IsEmpty untuk menentukan apakah ada kontrol yang dapat berubah.
Untuk mengaktifkan tata letak dialog, panggil metode CWnd::EnableDynamicLayout .
pDialog->EnableDynamicLayout(TRUE);
Lain kali pengguna mengubah ukuran dialog, metode CMFCDynamicLayout::Adjust dipanggil yang sebenarnya menerapkan pengaturan.
Jika Anda ingin menonaktifkan tata letak dinamis, panggil CWnd::EnableDynamicLayout dengan FALSE seperti untuk parameter bEnabled .
pDialog->EnableDynamicLayout(FALSE);
Untuk mengatur tata letak dinamis secara terprogram dari file sumber daya
Gunakan metode CMFCDynamicLayout::MoveHorizontalAndVertical untuk menentukan nama sumber daya dalam file skrip sumber daya yang relevan (file.rc) yang menentukan informasi tata letak dinamis, seperti dalam contoh berikut:
dynamicLayout->LoadResource("IDD_DIALOG1");
Sumber daya bernama harus mereferensikan dialog yang berisi informasi tata letak dalam bentuk entri AFX_DIALOG_LAYOUT dalam file sumber daya, seperti dalam contoh berikut:
///////////////////////////////////////////////////////////////////////////// // // AFX_DIALOG_LAYOUT // IDD_MFCAPPLICATION1_DIALOG AFX_DIALOG_LAYOUT BEGIN 0x0000, 0x6400, 0x0028, 0x643c, 0x0028 END IDD_DIALOG1 AFX_DIALOG_LAYOUT BEGIN 0x0000, 0x6464, 0x0000, 0x6464, 0x0000, 0x0000, 0x6464, 0x0000, 0x0000 END
Baca juga
Kelas CMFCDynamicLayout
Kelas Kontrol
Kelas Kotak Dialog
Dialog Editor
Tata Letak Dialog Dinamis untuk MFC di Visual C++ 2015