Năng suất lập trình: Cách ẩn con trỏ trong khi gõ


9

Bất cứ khi nào tôi nhấp vào một nơi nào đó để nhập một số mã, theo định nghĩa đó chính xác là nơi con trỏ chuột của tôi đang che khuất những gì tôi đang cố gắng nhập. Thông thường, nếu tôi quên di chuyển con trỏ đi trước khi bắt đầu gõ, tôi sẽ thấy mình di chuyển bàn tay từ bàn phím trở lại chuột chỉ để di chuyển con trỏ ra khỏi đường và sau đó quay lại gõ.

Tôi biết rằng có một tùy chọn "ẩn con trỏ trong khi gõ" ở cấp độ hệ điều hành, nhưng dường như điều đó không có tác dụng trong Visual Studio.

Ngoài ra, tôi biết các tiện ích có thể chạy liên tục trong nền (Ie CthonHider ), nhưng, vì lý do ổn định, tôi ngần ngại chạy một dịch vụ nền khác trên đầu trang của nhiều dịch vụ đang chạy.

Có một giải pháp?


Câu hỏi hay cho superuser.com. :-)
Franci Penov

Chà, bạn có thể sử dụng máy mac ...
dmckee --- ex-moderator mèo con

Đối với tôi, di chuyển chuột đi là một phản xạ mà tôi thậm chí không nghĩ tới. (có nghĩa là, cho đến khi tôi đã ngừng sử dụng biên tập thường xuyên và bắt đầu sử dụng vim)
Hasen

Câu trả lời:


5

Giống như bạn, tôi đã có vấn đề này mãi mãi. Vì vậy, tôi đã viết một đoạn script nhỏ ẩn con trỏ chuột cho dù bạn đang sử dụng ứng dụng Windows nào.

Lưu ý rằng nếu bạn chạy Visual Studio (hoặc bất cứ thứ gì) ở chế độ nâng cao, bạn cũng cần chạy tiện ích của tôi ở chế độ nâng cao.


Tôi nghi ngờ liệu một phương pháp mạnh mẽ như vậy có đúng trong mọi tình huống hay không. Ví dụ, con trỏ biến mất bất cứ khi nào gõ phím có thể rất khó chịu với các trò chơi.
harrymc

Trong trường hợp đó, bạn chỉ có thể dỡ nó trong một trò chơi ... có nghĩa là, tôi tin rằng hầu hết các trò chơi đều thực hiện con trỏ của riêng mình
Stefan Z Camilleri

Windows-Coder-Hider hoạt động tốt cho đến nay. Tôi đang tìm kiếm một cái gì đó đơn giản như kịch bản AHK. Cảm ơn @StefanZCamilleri!
Nga

3

Có vẻ như chức năng của "ẩn con trỏ trong khi gõ" phụ thuộc vào ứng dụng.

Tùy chọn này được đánh dấu trong các tùy chọn con trỏ chuột của tôi và hoạt động cho các ứng dụng như notepad, wordpad, Word và Visual Studio 6. Nhưng nó không hoạt động cho các ứng dụng khác, như Firefox và Visual Studio 2008.

Tôi tin rằng các ứng dụng không hoạt động được lập trình sai để hiển thị con trỏ liên tục. Là một lập trình viên, tôi có thể nói với bạn rằng lập trình con trỏ trong Windows là một mớ hỗn độn lớn, trong đó cuối cùng, cách duy nhất để giữ lành mạnh là liên tục khôi phục con trỏ theo các sự kiện nhất định. Rõ ràng, các lập trình viên đằng sau Visual Studio 2008 đã thực hiện các phím tắt tương tự.


Tuy nhiên, đây là một giả định không chính xác, vì nếu bạn ẩn con trỏ ở cấp độ HĐH, nó sẽ bị ẩn, làm mất ý tưởng buộc con trỏ hiển thị (sẽ ghi đè lên nó) - vui lòng xem câu trả lời của tôi bên dưới
Stefan Z Camilleri

1

Tôi biết đây có lẽ không phải là một giải pháp khả thi cho bạn nhưng tôi không muốn sử dụng chuột bằng cách có các ràng buộc chính cho mọi thứ trong IDE. Tôi có thể nhảy từ khung này sang khung khác, lỗi này sang lỗi khác mà không cần phải chạm chuột. Ngoài ra nếu các lớp học của bạn đẹp và nhỏ, bạn sẽ không phải cuộn lên và xuống các lớp quá nhiều (và ngay cả khi bạn phải bấm các phím mũi tên cũng đủ).


0

Bạn có thể tránh "ẩn con trỏ trong khi gõ" bằng cách bắt EN_UPDATE trong WndProc của cửa sổ cha mẹ của điều khiển chỉnh sửa và đặt vị trí con trỏ:

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
Đây có thể là một câu trả lời thực sự tuyệt vời, nhưng tôi không biết làm thế nào để sử dụng nó. Vui lòng thêm một lời giải thích. Không trả lời trong các bình luận; chỉnh sửa  câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
G-Man nói 'Phục hồi Monica'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.