Programlama verimliliği: Yazarken imleç nasıl gizlenir


9

Ne zaman bir yere bazı kod yazmak için tıklayın, tanımı gereği tam olarak benim fare imlecini nerede olduğunu, hangi yazmaya çalıştığım belirsiz. Genellikle, imleci yazmaya başlamadan önce hareket ettirmeyi unutursam, imleci yoldan çıkarmak ve sonra yazmaya geri dönmek için kendimi klavyemden elimi fareme geri hareket ettirirken bulurum.

İşletim sistemi düzeyinde "imleci yazarken gizle" seçeneği olduğunu biliyorum, ancak Visual Studio'da bir etkisi yok gibi görünüyor.

Ayrıca, arka planda (Ie CursorHider ) sürekli çalışabilen yararları biliyorum , ama, istikrar nedenleriyle, zaten çalışan birçok üstünde başka bir arka plan hizmeti çalıştırmak için hesistant.

Bir çözüm var mı?


Superuser.com için güzel bir soru. :-)
Franci Penov

Peki, bir mac kullanabilirsiniz ...
dmckee --- eski moderatör kedi yavrusu

Benim için fareyi uzaklaştırmak aklımdan bile geçmeyen bir refleks. (yani, düzenli editörleri kullanmayı
bırakıp

Yanıtlar:


5

Senin gibi ben de bu problemi sonsuza kadar yaşadım. Bu nedenle , hangi Windows uygulamasını kullanırsanız kullanın, fare imlecini gizleyen küçük bir komut dosyası yazdım .

Visual Studio'yu (veya herhangi bir şeyi) yükseltilmiş modda çalıştırırsanız, yardımcı programımı yükseltilmiş modda da çalıştırmanız gerektiğini unutmayın.


Böyle güçlü bir yöntemin her durumda doğru olup olmadığına dair şüphelerim var. Herhangi bir tuş yazıldığında imlecin kaybolması, örneğin oyunlarda çok can sıkıcı olabilir.
harrymc

Bu durumda, bir oyun sırasında boşaltma yapabilirsiniz ... ki, çoğu oyunun kendi imlecini uyguladığına inanıyorum
Stefan Z Camilleri

Windows-Cursor-Hider şu ana kadar iyi çalışıyor. AHK senaryosu gibi basit bir şey arıyordum. Teşekkürler @StefanZCamilleri!
russds

3

"Yazarken işaretçiyi gizle" işlevselliği uygulamaya bağlıdır.

Bu seçenek faremin işaretçi seçeneklerinde işaretlenmiştir ve not defteri, wordpad, Word ve Visual Studio 6 gibi uygulamalar için çalışır. Ancak Firefox ve Visual Studio 2008 gibi diğer uygulamalar için çalışmaz.

Bunun işe yaramadığı uygulamaların imleci tekrar tekrar gösterecek şekilde yanlış programlandığına inanıyorum. Bir programcı olarak, Windows'da imleci programlamanın büyük bir karmaşa olduğunu söyleyebilirim, nihayet aklı başında kalmanın tek yolu imleci belirli olaylar üzerine tekrar tekrar oluşturmaktır. Açıkçası, Visual Studio 2008'in arkasındaki programcılar aynı kısayolları kullanmışlardır.


Yine de bu yanlış bir varsayımdır, çünkü imleci bir OS düzeyinde gizlerseniz, imleci göstermeye zorlama fikrini geçersiz kılan (ki bunu geçersiz kılar) - pls aşağıda cevabımı görün
Stefan Z Camilleri

1

Bunun muhtemelen sizin için uygun bir çözüm olmadığını biliyorum, ancak IDE içindeki her şey için anahtar bağları olan fareyi hiç kullanmamayı seviyorum. Fareye dokunmadan bölmeden bölmeye, hatadan hataya vb. Ayrıca sınıflarınız güzel ve küçükse, sınıfları çok fazla yukarı ve aşağı kaydırmanız gerekmeyecektir (ve ok tuşlarına sahip olsanız bile yeterli olacaktır).


0

Düzenleme denetiminin üst penceresinin WndProc penceresinde EN_UPDATE değerini yakalayarak ve imleç konumunu ayarlayarak "yazarken işaretçiyi gizle" seçeneğinden kaçınabilirsiniz:

void CreateEdit( HWND hWnd )
{

    WNDCLASSEX wndClass;

    memset( &wndClass, 0, sizeof( wndClass ) );

    wndClass.cbSize = sizeof( wndClass );
    wndClass.style = CS_SAVEBITS;
    wndClass.lpfnWndProc = WndProcEditParent;
    wndClass.cbClsExtra = 0;
    wndClass.cbWndExtra = 0;
    wndClass.hInstance = GetModuleHandle( NULL );
    wndClass.hIcon = NULL;
    wndClass.hCursor = NULL;
    wndClass.hbrBackground = NULL;
    wndClass.lpszMenuName = NULL;
    wndClass.lpszClassName = L"EditParent";

    RegisterClassEx( &wndClass );

    HWND hWndEditParent = CreateWindowEx( 0
        , L"EditParent"
        , L""
        , WS_CHILD | WS_BORDER
        , 0
        , 0
        , 0
        , 0
        , hWnd
        , NULL
        , GetModuleHandle( NULL )
        , 0 );

    HWND hWndEdit = CreateWindowEx( 0
        , L"Edit"
        , L""
        , WS_CHILD
        , 0
        , 0
        , 0
        , 0
        , hWndEditParent
        , NULL
        , GetModuleHandle( NULL )
        , 0 );

    ...
}


LRESULT CALLBACK Edit::WndProcEditParent( HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam )
{
    switch( iMessage )
    {
        ...
        case WM_COMMAND:
            if( HIWORD( wParam ) == EN_UPDATE )
            {
            // this is the hack to avoid "hide pointer while typing"
                POINT point;

                GetCursorPos( &point );
                SetCursorPos( point.x, point.y );
            }
            break;
        ...
    }

    return DefWindowProc( hWnd, iMessage, wParam, lParam );
}

1
Bu gerçekten harika bir cevap olabilir, ama nasıl kullanılacağına dair hiçbir fikrim yok. Lütfen bir açıklama ekleyin. Yorumlarda yanıt vermeyin;  daha net ve eksiksiz hale getirmek için cevabınızı düzenleyin .
G-Man 'Monica'yı Eski Haline
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.