Aracılığıyla paylaş


Dinamik Düzen

Visual Studio 2015'teki MFC ile kullanıcının yeniden boyutlandırabileceği iletişim kutuları oluşturabilir ve düzenin boyut değişikliğine nasıl ayarlandığını denetleyebilirsiniz. Örneğin, her zaman altta kalmaları için, iletişim kutusunun alt kısmında yer alan alt kenara düğmeler yerleştirebilirsiniz. Diyalog kutusu genişletildiğinde, liste kutuları, düzenleme kutuları ve metin alanları gibi belirli denetimleri otomatik olarak genişleyecek şekilde ayarlayabilirsiniz.

MFC iletişim kutusu için dinamik düzen ayarlarını belirtme

Kullanıcı bir iletişim kutusunu yeniden boyutlandırdığında, iletişim kutusundaki denetimler X ve Y yönlerini yeniden boyutlandırabilir veya taşıyabilir. Kullanıcı bir iletişim kutusunu yeniden boyutlandırdığında denetimin boyutundaki veya konumundaki değişiklik dinamik düzen olarak adlandırılır. Örneğin, yeniden boyutlandırılmadan önce bir iletişim kutusu aşağıda verilmiştir:

Yeniden boyutlandırılmadan önce iletişim kutusu.

Yeniden boyutlandırıldıktan sonra, liste kutusu alanı daha fazla öğe gösterecek şekilde artırılır ve düğmeler sağ alt köşeyle birlikte taşınır:

Yeniden boyutlandırıldıktan sonra iletişim kutusu.

IDE'deki Kaynak Düzenleyicisi'nde her denetimin ayrıntılarını belirterek dinamik düzeni denetleyebilirsiniz veya bunu belirli bir denetimin CMFCDynamicLayout nesnesine erişip özellikleri ayarlayarak program aracılığıyla yapabilirsiniz.

Kaynak düzenleyicisinde dinamik düzen özelliklerini ayarlama

Kaynak düzenleyicisini kullanarak herhangi bir kod yazmak zorunda kalmadan bir iletişim kutusu için dinamik düzen davranışını ayarlayabilirsiniz.

Kaynak düzenleyicisinde dinamik düzen özelliklerini ayarlamak için

  1. MFC projesi açıkken, iletişim kutusu düzenleyicisinde çalışmak istediğiniz iletişim kutusunu açın.

    Kaynak düzenleyicisinde iletişim kutusunu açın.

  2. Bir denetim seçin ve Özellikler penceresinde ( Sınıf Görünümü'nde) dinamik düzen özelliklerini ayarlayın. Özellikler penceresindeki Dinamik Düzen bölümü, Taşıma Türü, Boyutlandırma Türü özelliklerini ve bu özellikler için seçilen değerlere bağlı olarak, ne kadar denetimin taşındığını veya boyutunu değiştirdiğini tanımlayan belirli özellikleri içerir. Taşıma Türü , iletişim kutusunun boyutu değiştikçe denetimin nasıl taşındığını belirler; Boyutlandırma Türü , iletişim kutusunun boyutu değiştikçe denetimin nasıl yeniden boyutlandırıldığını belirler. Dinamik olarak değiştirmek istediğiniz boyutlara bağlı olarak Taşıma Türü ve Boyutlandırma TürüYatay, Dikey, Her İkisi veya Hiçbiri olabilir. Yatay, X boyutudur; Dikey, Y yönüdür.

  3. Tamam veya İptal düğmelerinin yaygın olduğu gibi, düğme gibi bir denetimin sabit boyutta olmasını ve sağ altta yerinde kalmasını istiyorsanız, Boyutlandırma Türü'nüYok olarak ayarlayın ve Taşıma Türü'nüHer İkisi olarak ayarlayın. Taşıma Türü altındaki Hareketli X ve Hareketli Y değerleri için, denetimin sağ alt köşeden sabit bir mesafede kalmasına neden olmak için 100% ayarlayın.

    Dinamik Düzen.

  4. Diyalog kutusu genişledikçe genişlemesini istediğiniz bir kontrolün de olduğunu varsayalım. Genellikle, bir kullanıcı metin alanının boyutunu artırmak için çok satırlı bir düzenleme kutusunu genişletmek için bir iletişim kutusunu genişletebilir veya daha fazla veri görmek için bir liste denetimini genişletebilir. Bu durumda, Boyutlandırma Türü'nü Her İkisi olarak ayarlayın ve Taşıma Türü'nü yok olarak ayarlayın. Ardından , Boyutlandırma X ve Boyutlandırma Y değerlerini 100 olarak ayarlayın.

    Dinamik Düzen Ayarları.

  5. Denetimleriniz için anlamlı olabilecek diğer değerlerle denemeler yapın. Tek satırlık metin kutusu içeren bir iletişim kutusunda Boyutlandırma Türü yalnızca Yatay olarak ayarlanmış olabilir, örneğin.

Dinamik düzen özelliklerini program aracılığıyla ayarlama

Önceki yordam, bir iletişim kutusunun dinamik düzen özelliklerini tasarım zamanında belirtmek için kullanışlıdır, ancak çalışma zamanında dinamik düzeni denetlemek istiyorsanız, dinamik düzen özelliklerini program aracılığıyla ayarlayabilirsiniz.

Dinamik düzen özelliklerini program aracılığıyla ayarlamak için

  1. İletişim kutusu sınıfınızın uygulama kodunda, iletişim kutusu için dinamik düzeni belirtmek istediğiniz bir yer bulun veya oluşturun. Örneğin, iletişim kutunuza AdjustLayout gibi bir yöntem eklemek ve bunu düzenin değiştirilmesi gereken yerlerden çağırarak kullanmak isteyebilirsiniz. Bunu önce oluşturucudan veya iletişim kutusunda değişiklik yaptıktan sonra çağırabilirsiniz.

  2. İletişim kutusu için, GetDynamicLayout, CWnd sınıfının bir yöntemi çağırın. GetDynamicLayout bir nesneye CMFCDynamicLayout işaretçi döndürür.

    CMFCDynamicLayout* dynamicLayout = pDialog->GetDynamicLayout();
    
  3. Dinamik davranış eklemek istediğiniz ilk denetim için, dinamik düzen sınıfındaki statik yöntemleri kullanarak denetimin ayarlanması gereken şekilde kodlayan MoveSettings yapısını oluşturun. Bunu önce uygun statik yöntemi seçerek yaparsınız: CMFCDynamicLayout::MoveHorizontal, CMFCDynamicLayout::MoveVertical, CMFCDynamicLayout::MoveNone veya CMFCDynamicLayout::MoveHorizontalAndVertical. Taşımanın yatay ve/veya dikey yönleri için bir yüzde belirlersiniz veya ayarlarsınız. Bu statik yöntemlerin tümü, denetimin taşıma davranışını belirtmek için kullanabileceğiniz yeni oluşturulan moveSettings nesnesini döndürür.

    100'ün, iletişim kutusunun boyutu değiştiği kadar tam olarak hareket etmek anlamına geldiğini ve bu da denetimin kenarının yeni kenarlıktan sabit bir mesafede kalmasına neden olduğunu unutmayın.

    MoveSettings moveSettings = CMFCDynamicLayout::MoveHorizontal(100);
    
  4. SizeSettings türünü kullanan boyut davranışı için de aynı işlemi yapın. Örneğin, iletişim kutusu yeniden boyutlandırıldığında denetimin boyutunun değişmediğini belirtmek için aşağıdaki kodu kullanın:

    SizeSettings sizeSettings = CMFCDynamicLayout::SizeNone();
    
  5. CMFCDynamicLayout::AddItem yöntemini kullanarak denetimi dinamik düzen yöneticisine ekleyin. İstenen denetimi belirtmenin farklı yolları için iki aşırı yükleme vardır. Biri denetimin pencere tutamacını (HWND) ve diğeri de denetim kimliğini alır.

    dynamicLayout->AddItem(hWndControl,
    moveSettings,
    sizeSettings);
    
  6. Taşınması veya yeniden boyutlandırılması gereken her denetim için yineleyin.

  7. Gerekirse, CMFCDynamicLayout::HasItem yöntemini kullanarak bir denetimin dinamik düzen değişikliklerine tabi denetimler listesinde olup olmadığını veya cmfcdynamiclayout::IsEmpty yöntemini kullanarak değişikliklere tabi olan denetimler olup olmadığını belirleyebilirsiniz.

  8. İletişim kutusu düzenini etkinleştirmek için CWnd::EnableDynamicLayout yöntemini çağırın.

    pDialog->EnableDynamicLayout(TRUE);
    
  9. Kullanıcı iletişim kutusunu bir sonraki yeniden boyutlandırışında CMFCDynamicLayout::Adjust yöntemi çağrılır ve bu yöntem ayarları gerçekten uygular.

  10. Dinamik düzeni devre dışı bırakmak istiyorsanız, CWnd::EnableDynamicLayout'ubEnabled parametresi için FALSE ile çağırın.

    pDialog->EnableDynamicLayout(FALSE);
    

Dinamik düzeni bir kaynak dosyasından program aracılığıyla ayarlamak için

  1. Aşağıdaki örnekte olduğu gibi, ilgili kaynak betik dosyasında (.rc dosyası) dinamik düzen bilgilerini belirten bir kaynak adı belirtmek için CMFCDynamicLayout::MoveHorizontalAndVertical yöntemini kullanın:

    dynamicLayout->LoadResource("IDD_DIALOG1");
    

    Adlandırılmış kaynak, kaynak dosyasında AFX_DIALOG_LAYOUT girişi biçiminde düzen bilgilerini içeren bir iletişim kutusuna, aşağıdaki örnekte olduğu gibi, başvurmalıdır.

    /////////////////////////////////////////////////////////////////////////////
    //
    // 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
    

Ayrıca bakınız

CMFCDynamicLayout Sınıfı
Denetim Sınıfları
İletişim Kutusu Sınıfları
İletişim Kutusu Düzenleyicisi
Visual C++ 2015'te MFC için Dinamik İletişim Kutusu Düzeni