Aracılığıyla paylaş


konsol modlarını High-Level

Üst düzey konsol işlevlerinin davranışı, konsol giriş ve çıkış modlarından etkilenir. Bir konsol oluşturulduğunda konsolun giriş arabelleği için aşağıdaki konsol giriş modlarının tümü etkinleştirilir:

  • Satır giriş modu
  • İşlenen giriş modu
  • Yankı giriş modu

Aşağıdaki konsol çıkış modlarının her ikisi de oluşturulduğunda konsol ekranı arabelleği için etkinleştirilir:

  • İşlenen çıkış modu
  • EOL çıkış modunda sarmalama

İşlenen çıkış moduyla birlikte üç giriş modu da birlikte çalışacak şekilde tasarlanmıştır. Bu modların tümünü grup olarak etkinleştirmek veya devre dışı bırakmak en iyisidir. Tümü etkinleştirildiğinde, uygulamanın "pişmiş" modda olduğu söylenir, bu da işlemenin çoğunun uygulama için işlendiği anlamına gelir. Tümü devre dışı bırakıldığında, uygulama "ham" moddadır, bu da girişin filtrelenmediği ve tüm işlemlerin uygulamaya bırakıldığı anlamına gelir.

Bir uygulama, konsolun giriş arabelleğinin veya ekran arabelleğinin geçerli modunu belirlemek için GetConsoleMode işlevini kullanabilir. SetConsoleMode işlevinde aşağıdaki değerleri kullanarak bu modlardan herhangi birini etkinleştirebilir veya devre dışı bırakabilirsiniz. Bir ekran arabelleğinin çıkış modunu ayarlamanın diğer ekran arabelleklerinin çıkış modunu etkilemediğini unutmayın.

hConsoleHandle parametresi bir giriş tutamacıysa, mod aşağıdaki değerlerden biri veya daha fazlası olabilir. Bir konsol oluşturulduğunda, ENABLE_WINDOW_INPUT ve ENABLE_VIRTUAL_TERMINAL_INPUT dışındaki tüm giriş modları varsayılan olarak etkinleştirilir.

Değer Anlamı
ENABLE_ECHO_INPUT 0x0004 ReadFile veya ReadConsole işlevi tarafından okunan karakterler konsola yazılırken etkin ekran arabelleğine yazılır. Bu mod yalnızca ENABLE_LINE_INPUT modu da etkinleştirildiğinde kullanılabilir.
ENABLE_INSERT_MODE 0x0020 Etkinleştirildiğinde, konsol penceresine girilen metin geçerli imleç konumuna eklenir ve bu konumdan sonraki tüm metnin üzerine yazılmaz. Devre dışı bırakıldığında, izleyen tüm metnin üzerine yazılır.
ENABLE_LINE_INPUT 0x0002 ReadFile veya ReadConsole işlevi yalnızca satır başı karakteri okunduğunda döndürür. Bu mod devre dışı bırakılırsa, bir veya daha fazla karakter kullanılabilir olduğunda işlevler geri döner.
ENABLE_MOUSE_INPUT 0x0010 Fare işaretçisi konsol penceresinin kenarlıkları içindeyse ve pencere klavye odağına sahipse, fare hareketi ve düğme baskıları tarafından oluşturulan fare olayları giriş arabelleğine yerleştirilir. Bu mod etkinleştirildiğinde bile bu olaylar ReadFile veya ReadConsole tarafından atılır. ReadConsoleInput işlevi, giriş arabelleğinden MOUSE_EVENT giriş kayıtlarını okumak için kullanılabilir.
ENABLE_PROCESSED_INPUT 0x0001 CTRL+C, sistem tarafından işlenir ve giriş arabelleğine yerleştirilmemiştir. Giriş arabelleği ReadFile veya ReadConsole tarafından okunuyorsa, diğer denetim anahtarları sistem tarafından işlenir ve ReadFile veyaReadConsole arabelleğinde döndürülemez. ENABLE_LINE_INPUT modu da etkinse geri al, satır başı ve satır besleme karakterleri sistem tarafından işlenir.
ENABLE_QUICK_EDIT_MODE 0x0040 Bu bayrak, kullanıcının metin seçmek ve düzenlemek için fareyi kullanmasını sağlar. Bu modu etkinleştirmek için kullanın ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS. Bu modu devre dışı bırakmak için bu bayrak olmadan ENABLE_EXTENDED_FLAGS kullanın.
ENABLE_WINDOW_INPUT 0x0008 Konsol ekranı arabelleğinin boyutunu değiştiren kullanıcı etkileşimleri konsolun giriş arabelleğinde bildirilir. Bu olaylar hakkındaki bilgiler , ReadConsoleInput işlevini kullanan uygulamalar tarafından giriş arabelleğinden okunabilir, ancak ReadFile veyaReadConsole kullananlar tarafından okunamayabilir.
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 Bu bayrağın ayarlanması, Sanal Terminal işleme altyapısını, konsol penceresi tarafından alınan kullanıcı girişini, destekleyici bir uygulama tarafından ReadFile veyaReadConsole işlevleri aracılığıyla alınabilen Konsol Sanal Terminal Sıralarına dönüştürmeye yönlendirir.

Bu bayrağın tipik kullanımı, yalnızca sanal terminal dizileri aracılığıyla iletişim kuran bir uygulamaya bağlanmak için çıkış tanıtıcısındaki ENABLE_VIRTUAL_TERMINAL_PROCESSING ile birlikte tasarlanmıştır.

hConsoleHandle parametresi bir ekran arabellek tutamacıysa, mod aşağıdaki değerlerden biri veya daha fazlası olabilir. Bir ekran arabelleği oluşturulduğunda, her iki çıkış modu da varsayılan olarak etkinleştirilir.

Değer Anlamı
ENABLE_PROCESSED_OUTPUT 0x0001 WriteFile veya WriteConsole işlevi tarafından yazılan veya ReadFile veyaReadConsole işlevi tarafından yankılanan karakterler ASCII denetim dizileri için ayrıştırılır ve doğru eylem gerçekleştirilir. Geri al, sekme, çan, satır başı ve satır besleme karakterleri işlenir. Denetim dizileri kullanılırken veya ENABLE_VIRTUAL_TERMINAL_PROCESSING ayarlandığında etkinleştirilmelidir.
ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 WriteFile veya WriteConsole ile yazarken ya da ReadFile veya ReadConsole ile yankılandığında, imleç geçerli satırın sonuna ulaştığında sonraki satırın başına geçer. Bu, konsol penceresinde görüntülenen satırların, imleç penceredeki son satırın ötesine geçtiğinde otomatik olarak yukarı kaydırmasına neden olur. Ayrıca konsol ekranı arabelleğinin içeriğinin yukarı (.. /imleç konsol ekranı arabelleğindeki son satırın ötesine geçtiğinde konsol ekranı arabelleğinin üst satırını atarak). Bu mod devre dışı bırakılırsa, satırdaki son karakterin üzerine sonraki karakterler yazılır.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 WriteFile veya WriteConsole ile yazarken, karakterler VT100 ve imleç hareketini, renk/yazı tipi modunu ve mevcut Konsol API'leri aracılığıyla da gerçekleştirilebilecek diğer işlemleri denetleye benzer denetim karakter dizileri için ayrıştırılır. Daha fazla bilgi için bkz. Konsol Sanal Terminal Dizileri.
Bu bayrağı kullanırken ENABLE_PROCESSED_OUTPUT ayarlandığından emin olun.
DISABLE_NEWLINE_AUTO_RETURN 0x0008 WriteFile veya WriteConsole ile yazarken, bu işlem satır sonu sarmalama işlemine imleç taşıma ve arabellek kaydırma işlemlerini geciktirebilecek ek bir durum ekler.

Normalde ENABLE_WRAP_AT_EOL_OUTPUT ayarlandığında ve metin satırın sonuna ulaştığında, imleç hemen bir sonraki satıra geçer ve arabelleğin içeriği bir satır yukarı kaydırılır. Bu bayrak kümesinin aksine, imleç bir sonraki satıra taşınmaz ve kaydırma işlemi gerçekleştirilmez. Yazılan karakter satırda son konumda yazdırılır ve imleç ENABLE_WRAP_AT_EOL_OUTPUT kapalıymış gibi bu karakterin üzerinde kalır, ancak yazdırılabilir bir sonraki karakter ENABLE_WRAP_AT_EOL_OUTPUT açıkmış gibi yazdırılır. Üzerine yazma gerçekleşmez. Özellikle, imleç hızla aşağıdaki satıra ilerler, gerekirse bir kaydırma gerçekleştirilir, karakter yazdırılır ve imleç bir konum daha ilerler.

Bu bayrağın tipik kullanımı, ekranda son karakterin yazıldığı terminal öykünücüsünün daha iyi öyküneceği ENABLE_VIRTUAL_TERMINAL_PROCESSING ayarlanmasıyla birlikte tasarlanmıştır (.. /sağ alt köşede) anında kaydırma tetiklemeden istenen davranıştır.
ENABLE_LVB_GRID_WORLDWIDE 0x0010 WriteConsoleOutput ve WriteConsoleOutputAttribute gibi karakter öznitelikleri yazmaya yönelik API'ler, metnin ön plan ve arka planının rengini ayarlamak için karakter özniteliklerinden bayrak kullanımına olanak sağlar. Ayrıca, COMMON_LVB ön eki ile bir dizi DBCS bayrağı belirtildi. Geçmişte bu bayraklar yalnızca Çince, Japonca ve Kore dilleri için DBCS kod sayfalarında çalışırdı.

Baştaki bayt ve sondaki bayt bayrakları dışında, kalan bayraklar çizgi çizimini ve ters videoyu (.. /swap ön plan ve arka plan renkleri) çıkışın bölümlerini vurgulayan diğer diller için yararlı olabilir.

Bu konsol modu bayrağının ayarlanması, bu özniteliklerin her dildeki her kod sayfasında kullanılmasına izin verir.

CJK olmayan makinelerde bu bayrakları yoksayarak konsoldan yararlanan bilinen uygulamalarla uyumluluğu korumak varsayılan olarak kapalıdır. Bu uygulamalar, kendi amaçları doğrultusunda veya yanlışlıkla bu alanlardaki bitleri depolar.

ENABLE_VIRTUAL_TERMINAL_PROCESSING modunun kullanılması, ekli uygulama Konsol Sanal Terminal Dizileri aracılığıyla altı çizili veya ters video isterse bu bayrak hala kapalıyken LVB kılavuz ve ters video bayraklarının ayarlanmasına neden olabilir.