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, iletişim kutusunun alt kısmına, her zaman altta kalmaları için alt kenara düğmeler ekleyebilirsiniz. Kullanıcı iletişim kutusunu genişlettiğinde, genişletmek için liste kutuları, düzenleme kutuları ve metin alanları gibi belirli denetimleri de 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:

Dialog before being resized.

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:

Dialog after being resized.

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.

    Open the dialog in the resource editor.

  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 olacak şekilde %100 ayarlayın.

    Dynamic Layout.

  4. İletişim kutusu genişledikçe genişletmek istediğiniz bir denetiminiz 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.

    Dynamic Layout Settings.

  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 kutunuzda olduğu gibi AdjustLayout bir yöntem eklemek ve düzenin değiştirilmesi gereken yerlerden çağırmak isteyebilirsiniz. Bunu önce oluşturucudan veya iletişim kutusunda değişiklik yaptıktan sonra çağırabilirsiniz.

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

    CMFCDynamicLayout* dynamicLayout = pDialog->GetDynamicLayout();
    
  3. Dinamik davranış eklemek istediğiniz ilk denetimde, dinamik düzen sınıfındaki statik yöntemleri kullanarak denetimin ayarlanması gereken şekilde kodlayan Move Ayarlar 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 geçirirsiniz. Bu statik yöntemlerin tümü, denetimin taşıma davranışını belirtmek için kullanabileceğiniz yeni oluşturulan move Ayarlar 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. Boyut Ayarlar türünü kullanan boyut davranışı için de aynı şeyi 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, bEnabled parametresinde olduğu gibi YANLIŞ ile CWnd::EnableDynamicLayout'u ç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, aşağıdaki örnekte olduğu gibi kaynak dosyasındaki AFX_DIALOG_LAYOUT girişi biçiminde düzen bilgilerini içeren bir iletişim kutusuna 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 bkz.

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