Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 4 của 4 Đầu tiênĐầu tiên ... 234
Kết quả 31 đến 40 của 40
  1. #31
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi vinachip
    Mình không hiển thị được ảnh trong control picture được, bạn giúp mình với!!
    Mình đang làm đề tài về xử lý ảnh, mình muốn hiển thị hình ảnh capture từ camera trực tiếp lên form riêng chứ ko theo cái windows form, mình không biết làm sao để liên kết một biến kiểu dữ liệu riêng của opencv là IpllImg với control picture trong MFC, một cách khác là mình lưu cái ảnh lại rồi load lên nhưng vẫn không xong! bạn có kinh nghiệm về MFC giúp mình với nhé!!
    chào bạn! mình mới tìm hiểu về MFC và OpenCV. Như bạn nói, bạn cần phải lưu bức ảnh lấy được từ camera và load nó lên, bức ảnh được load lên phải được định dạng bằng file .bmp bạn nhé (bạn lưu ảnh từ camera thành file .bmp là được)! Khi đó bạn sẽ load được bức ảnh đó lên picture control rồi.

  2. #32
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình bổ xung chút, dành cho beginner.

    Bài viết ở #2, thay vì :


    Mã:
        CEdit *pEditBox=(CEdit*)GetDlgItem(IDC_EDIT1);
    Ta có thể tạo 1 biến thành viên cho control đó như sau :

    Hình 1 mình mượn ở #3 :





    Sau khi Finish, trình biên dịch sẽ khai báo giúp ta biến thành viên kiểu CEdit :



    Và liên kết biến đó với control mà ta chọn :



    Khi đó, ta có thể sử dụng nó như sau: ( mượn code ở #2 )


    Mã:
    void CDialogDlg::OnBnClickedOk(){    // TODO: Add your control notification handler code here       /* Đây là mã mà VC++ tự thêm cho bạn để xử lý sự kiện khi bạn nhấn lên nút OK       để cập nhật nôi dung trong TextBox lên caption của Dialog        Ở trên bạn đã kéo từ ToolBox vào một TextBox có ID là IDC_EDIT1.    */     //Lấy nội dung từ EditBox có IDC là IDC_EDIT1    CString content; //Biến lưu nội dung EditBox     /*Trong MFC EditBox control được cài đặt một lớp    tương ứng là CEdit dùng để điều khiển control EditBox     Hàm GetDlgItem(UINT nID): Trả về một con trỏ dạng CWnd là lớp cơ sở của mọi    Control trên Dialog kể cả EditBox của ta.    */     //Lấy Text từ trên EditBox thông qua contrỏ pEditBox    ctrlEdit1.GetWindowTextW(content);     //Cập nhật lên title bar    this->SetWindowTextW(content);    //OnOK();}
    Lợi thế hơn là ta có thể sử dụng lại biến đó ở các hàm khác trong class biến đó khai báo.

  3. #33
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Các đại ca có tài liệu MFC mà dùng visual studio 2008 hoặc 2010 bằng tiếng việt thì up lên cho em xin với. Thanhks các anh! [IMG]images/smilies/1.gif[/IMG]

  4. #34
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nguyenthanh.hut
    Các đại ca có tài liệu MFC mà dùng visual studio 2008 hoặc 2010 bằng tiếng việt thì up lên cho em xin với. Thanhks các anh! [IMG]images/smilies/1.gif[/IMG]
    Em không phải đại ca [IMG]images/smilies/biggrin.png[/IMG]. Nhưng em có tài liệu MFC tiếng Việt.
    http://www.mediafire.com/?cnnbhb4fybbl1

  5. #35
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Tadius
    Bước 1 : Khởi động VC++
    Bước 2 : Tạo project MFC Application mới



    Sau khi Wizard của MFC hoàn thành bạn thu được giao diện đơn giản sau


    Bước 3 : Sử dụng ToolBox kéo một Static Text và một EditBox vào Dialog
    Để đặt thuộc tính cho công cụ điều khiển trên Dialog bạn sử dụng của sổ Property View có thể tìm trong thực đơn
    View->Other Windows -> Properties Windows hoặc phím tắt Alt + Enter

    Static Text: Bạn đặt Caption
    Caption = "Enter text here to set caption of Dialog"



    Bước 4 : Viết đáp ứng sự kiện chuột cho nút OK để đổi caption của Dialog thành nội dung mà ta đặt trong text box



    Sau đó tìm đến hàm void CDialogDlg::OnBnClickedOk() trong file DialogDlg.cpp
    Sử dụng Class View để tìm nhanh ra hàm OnBnClickedOk() trong lớp CDialogDlg
    bằng cách nhấn đúp vào tên hàm trong cửa sổ Class View.

    Và ta hoàn thành đoạn code như sau

    Mã:
    void CDialogDlg::OnBnClickedOk(){    // TODO: Add your control notification handler code here        /* Đây là mã mà VC++ tự thêm cho bạn để xử lý sự kiện khi bạn nhấn lên nút OK       để cập nhật nôi dung trong TextBox lên caption của Dialog        Ở trên bạn đã kéo từ ToolBox vào một TextBox có ID là IDC_EDIT1.    */     //Lấy nội dung từ EditBox có IDC là IDC_EDIT1    CString content; //Biến lưu nội dung EditBox      /*Trong MFC EditBox control được cài đặt một lớp    tương ứng là CEdit dùng để điều khiển control EditBox     Hàm GetDlgItem(UINT nID): Trả về một con trỏ dạng CWnd là lớp cơ sở của mọi    Control trên Dialog kể cả EditBox của ta.    */    CEdit *pEditBox=(CEdit*)GetDlgItem(IDC_EDIT1);     //Lấy Text từ trên EditBox thông qua contrỏ pEditBox    pEditBox->GetWindowTextW(content);     //Cập nhật lên title bar    this->SetWindowTextW(content);    //OnOK();}
    Bước 6: Bấm F5 để build and Run và nhập thử 1 đoạn Text rồi bấm OK xem thành quả của bạn.
    Bạn ơi, mình chạy thử code của bạn thì nó báo lỗi :
    .... fatal error C1083: Cannot open include file: 'afxcontrolbars.h': No such file or directory

    Làm thế nào khắc phục lỗi này vậy bạn

  6. #36
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Đó là do bạn chưa cài VS2008 SP1. Khi cài VS2008 SP1 nó sẽ có kèm theo bộ nâng cấp giao diện Ribbon (Office 97) cho MFC sẽ có kèm header.

  7. #37
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Tadius
    Trong MFC khi bạn thiết kế một Dialog với một control chắc chắn có 2 vấn đề bạn muốn quan tâm tới control đó trên Dialog:

    1. Thường là chỉ quan tâm đến dữ liệu được lưu trên Control đó là gì.
    2. Dữ liệu được nhập có hợp lệ hay không
    3. Bạn có nhu cầu điều khiển control đó hay không? (Ví đụ thay font cho Control, hoặc đi chuyển control đến vị trí khác )

    MFC cung cấp cho bạn cơ chế DDX - Dialog Data Exchange giúp bạn kết nối một Control trên Dialog thông qua ID của nó với một biến và thông qua biến này ta thao tác với nó dễ dàng để lấy hoặc là cập nhật dữ liệu lên Control tương ứng.

    Ngoài ra để đảm bảo tính đúng đắn của dữ liệu - ví dụ bạn có textbox chỉ cho phép user nhập số nếu user nhập sai thì sẽ đưa ra thông báo. Cơ chế này được MFC hỗ trợ sẵn thông qua DDV - Dialog Data Validation nhằm đảm bảo việc bạn đưa từ Control vào biến lại là hợp lệ.

    Hàm liên quan :
    UpdateData(BOOL SaveAndValidate);

    Khi gọi UpdateData(TRUE) - Đưa dữ liệu từ mọi control vào biến thành phần tương ứng kết nối với nó:

    + Trước tiên MFC sẽ kiểm tra tính hợp lệ của dữ liệu trên công cụ điều khiển
    nếu sai đưa ra thông báo lỗi.

    + Nếu dữ liệu đã hợp lệ thì việc chuyển dữ liệu từ Control -> Biến được thực
    hiện và bạn có được dữ liệu hiển thị trên Control hiện đã được lưu trong
    biến.

    Khi gọi UpdateData(FALSE) - Là thao tác ngược lại đư dữ liệu từ biến lên Control.

    Bước 1: Tạo project MFC Dialog Based lấy tên Solution là SimplCalc


    Bước 2: Sử dụng ToolBox thiết kế lại giao diện chương trình đồng thời
    đặt các ID cho các công cụ điều khiển trên Dialog như trên hình



    Bước 3: Tạo kết nối từ Control <-> Biến sử dụng ClassWizard. Bạn đang sử dụng DDX và DDV trong MFC chính là ở đây.






    Bước 4: Xây dựng bắt sự kiện khi nút + được bấm. Các nút còn lại bạn xây dựng tương tự



    PS: Lession 3 Sử dụng Basic of ListBox, ComboxBox Control, CheckBox Control
    bạn có thể hướng dẫn bài này kỹ thêm chút không

  8. #38
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình cũng đang làm MFC nhưng cả thread nữa, không biết có bác nào thạo về thread trong MFC không ạ?
    ví dụ, mình đang có các thread như sau:
    AfxBeginThread(ProcessGoTarget, (void*)this);
    m_pCommMscomm1Thread=AfxBeginThread(ProcessOnCommM scomm1, NULL);
    AfxBeginThread(ProcessWaitTerminate, NULL);

    mình muốn sử dụng lệnh sau
    AfxEndThread(ProcessGoTarget, (void*)this);
    để tắt thread ProcessGoTarget đi. nhưng không thành công. Xin nhờ các bác chỉ bảo giúp ạ.

  9. #39
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tinhioit
    Mình cũng đang làm MFC nhưng cả thread nữa, không biết có bác nào thạo về thread trong MFC không ạ?
    ví dụ, mình đang có các thread như sau:
    AfxBeginThread(ProcessGoTarget, (void*)this);
    m_pCommMscomm1Thread=AfxBeginThread(ProcessOnCommM scomm1, NULL);
    AfxBeginThread(ProcessWaitTerminate, NULL);

    mình muốn sử dụng lệnh sau
    AfxEndThread(ProcessGoTarget, (void*)this);
    để tắt thread ProcessGoTarget đi. nhưng không thành công. Xin nhờ các bác chỉ bảo giúp ạ.
    theo MSDN thì hàm AfxEndThread không phải dùng để terminate thread như bạn nghĩ

    http://msdn.microsoft.com/en-us/library/s96hway2%28v=vs.80%29.aspx

    hàm này gọi bên trong thread đang thực thi, tức là bên trong ProcessGoTarget.

    Người ta tạo thread khi thực hiện 1 công việc có khoảng thời gian thực hiện rất dài ( quá trình xử lý dữ liệu lớn, kết nối tới server và gửi nhận dữ liệu).Bình thường, bạn có 1 vòng lặp trong thread. Khi vòng lặp kết thúc, có nghĩa là thread cũng dừng.

    Bạn có thể tạo 1 event, gọi là TerminateEvent (có thể dùng mutex hoặc semaphore, tùy yêu cầu cụ thể của bài toán), trong thread có 1 chỗ gọi hàm WaitForSingleObject đợi TerminateEvent trên được kích hoạt. Khi có tín hiệu từ TerminateEvent , bạn thoát khỏi vòng lặp hoặc gọi hàm AfxEndThread

  10. #40
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    thank, bài viết rất hay
    cho mình hỏi CString nằm trong thư viện nào vậy ? Mình sử dụng vs 2012

 

 
Trang 4 của 4 Đầu tiênĐầu tiên ... 234

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •