2009-02-13 31 views
26

Có ai có thể giới thiệu một wrapper C++ cho ncurses không?Trình bao bọc C++ dành cho ncurses?

+0

tôi tò mò, tại sao bạn sẽ cần C++ giấy gói? Tại sao không sử dụng API C trực tiếp? Chỉ cần tự hỏi :) – hhafez

+15

Chắc chắn nếu trình bao bọc không tồn tại. Nhưng nếu trình bao bọc tồn tại tại sao không sử dụng chúng. Tôi đề nghị bạn chỉ cần sử dụng lắp ráp cho tất cả mọi thứ? – BubbaT

+5

nó là một chút của một căng so sánh đi từ C đến C + + với đi từ C để lắp ráp phải không? – hhafez

Trả lời

3

Hãy thử dự án giả mạo nguồn này. Đây là một bộ phát triển ncurses cho

C++

http://ndk-xx.sourceforge.net/

+0

Và bạn đã sử dụng cái này? – BubbaT

+1

Trông kinda bị bỏ rơi với tôi. –

+3

Yep Ryan, đó là lý do tôi hỏi. – BubbaT

1

Tôi đã viết một vài năm trở lại của riêng tôi ... Tôi đã làm như vậy bởi vì một thư viện ncurses-tương thích đã được cài đặt trong Linux, nhưng không dưới Win32. (Tôi có thể sử dụng PDCurses, nhưng tại thời điểm đó tôi không thể ngăn PDC_breakout() ngừng hoạt động refresh() mà không popping mở mã nguồn.)

Trình bao bọc này được viết trong vòng 7 ngày, nhanh chóng phát triển. Như vậy, nó có một số phụ thuộc (có thể tháo rời) trên các kiểu dữ liệu không đầu vào/đầu ra cụ thể cho một chương trình, nhưng chúng có thể được loại bỏ một cách an toàn. Về cơ bản, tôi có hai chức năng chính - khởi tạo, gọi tất cả các hàm khởi tạo curses và định nghĩa màu mà tôi không có kế hoạch chỉnh sửa sau, và chức năng làm mới, chuyển bộ đệm hiển thị "nội bộ" sang đầu ra .

Nhìn chung, bạn có thể cảm thấy thoải mái hơn khi tạo thẻ chỉ mục hoặc trang cheat có chứa "initscr(); cbreak(); noecho(); di chuyển (y, x); addch (ch); endwin(); ", nhưng nếu bạn muốn sử dụng trình bao bọc của tôi, bạn có thể nhắn tin cho tôi hoặc tải xuống từ here miễn là bạn tuân theo giấy phép Creative Commons.

+0

Cảm ơn bạn nhưng không. Đây là một dự án cá nhân và tôi bắt đầu viết một phiên bản dựa trên luồng. Tôi chỉ nên thêm vài giờ nữa để hoàn thành bộ xương cơ bản. – BubbaT

13

ncurses chính nó bao gồm một tập hợp các ràng buộc C++. Tôi không biết nếu bất kỳ bản phân phối chính bao gồm các ràng buộc C++ nhưng nếu bạn nhận được ncurses source bạn sẽ tìm thấy chúng trong thư mục C++.

Tôi không biết liệu tôi có nhất thiết phải giới thiệu cho họ hay không nhưng chúng có lẽ là các ràng buộc C++ tốt nhất và nó bao gồm các ràng buộc cho các tiện ích mở rộng Biểu mẫu, Bảng điều khiển và Trình đơn. Họ là một chút thô xung quanh các cạnh và không có nhiều tài liệu hướng dẫn.

+0

Thật vậy. Bạn có biết bất kỳ tài liệu nào liên quan đến các ràng buộc không? Không thể tìm thấy một điều trực tuyến như vậy và tôi muốn tránh đọc nguồn -_- – alkar

+0

Theo như tôi biết chỉ những gì có trong thư mục C++ trong nguồn ncurses. Tôi đã dành rất nhiều thời gian đọc nguồn. – Craig

+0

Thậm chí không có gợi ý nhỏ trong thư mục tài liệu. Tôi đoán nó sẽ mất một lúc. Bất kỳ lời khuyên về nơi để bắt đầu? – alkar

1

Một vài năm trước khi tôi cần nó, tôi đã xem xét một số tập tin nguyền rủa cung cấp các lời nguyền C++ thingies. Mặc dù họ 'làm việc' tốt, tôi đã thất vọng - mã mới này thậm chí còn tiêm thêm nhiều 'macro bị nguyền rủa' nữa. Tôi không nhận ra bất kỳ nỗ lực nào để loại bỏ các macro (không có không gian tên, chỉ có một vài lớp). Tôi cho rằng đó không phải là mục tiêu của họ.

Cuối cùng tôi đã quyết định rằng các macro này cũng bị dồn vào quá nhiều ký hiệu hữu ích, cách mà macro chỉ có thể thực hiện. Tôi đã kết thúc refactoring mã của tôi để giảm thiểu tiếp xúc với các macro.

Về cơ bản, tôi đã di chuyển một số phương pháp ứng dụng của mình hiển thị mọi thứ cho 2 tệp mới. Việc tái cấu trúc này cũng tạo ra một vài phương thức mới nhỏ, được thêm vào 2 tệp 'hiển thị' mới. (11 tệp được mở rộng thành 13)

Như tôi nói, chúng hoạt động tốt, mã của tôi không bị ảnh hưởng bởi thay đổi, các nhận xét trong cursesw.h đề xuất thay đổi macro thành dòng và tôi tìm thấy một số lớp trong đó.

cursesf.h có các lớp được sử dụng ở nơi khác như cursesm.h (đối với menu) và cursesw.h (dành cho cửa sổ), curseslk.h (cho bộ khóa nhãn mềm), tất cả những thứ tôi chưa sử dụng.

Tôi không thích cursesapp.h - có thể đây là điều Windows?


Tôi có thể đề xuất điều này không? Vâng, tôi thích mã này để các lời nguyền trước đó, mặc dù tôi refactor để giữ các macro chứa.

-1

Có thể cuộn bao bì C++ của riêng bạn?

... Tôi đã tạo một vài trình bao bọc C++ cho một số hàm ncurses và CDK và các đối tượng.

Tuy nhiên, tôi chỉ tạo trình bao bọc cho các chức năng và cấu trúc khi cần hỗ trợ cho dự án nhỏ của riêng tôi, sử dụng CDK và ncurses cho GUI của nó. Tuy nhiên, họ có thể cung cấp cho bạn những ý tưởng để tạo gói C++ của riêng bạn cho các cuộc gọi CDK và ncurses mà bạn cần. Về cơ bản tôi đã sử dụng chúng để tôi có thể tránh rò rỉ bộ nhớ bằng cách hủy C++ xóa mọi chuỗi char * được tạo động hoặc sử dụng std::string thay vì các chuỗi char* và như vậy.

Dưới đây là một ví dụ rất khiêm tốn:

class RXL_ncurses { 

public: 
    static void draw(WINDOW * pWin, int y, int x, std::string lineOfText); 
}; 

void RXL_ncurses::draw(WINDOW * pWin, int y, int x, std::string lineOfText) { 
    // 
    // Draw a std::string into the WINDOW*, starting at y,x 
    // 
    chtype letter; 
    unsigned int i; 
    unsigned int xPos; 
    unsigned int yPos; 

    for(i = 0; i < lineOfText.size(); i++) { 
    letter = (chtype) lineOfText[i]; 

    xPos = i + x; 
    yPos = y; 
    mvwaddch(pWin, yPos, xPos, letter); 
    } 
} 

http://mrflash818.geophile.net/software/nc_834v5010generator/

Các vấn đề liên quan