2010-06-17 29 views
5

Tôi đã có một ứng dụng MFC đơn giản hiện có mà người dùng chỉ định tệp đầu vào, tệp đầu ra và sau đó là nút "Quy trình". Tôi chỉ muốn thêm khả năng để các tập tin đầu vào/đầu ra là các tham số dòng lệnh. Nhưng, nếu chúng tồn tại, tôi không muốn GUI hiển thị. Tôi chỉ muốn "Quy trình" thực hiện. Tôi thấy nơi tôi có thể nhận được các tham số dòng lệnh (m_lpCmdLine) nhưng làm thế nào tôi có thể bỏ qua việc hiển thị GUI? Nếu tôi bước vào ứng dụng, nó sẽ chuyển trực tiếp đến winmain.cpp và hiển thị GUI mà không cần bước vào bất kỳ mã nào của tôi.Làm cách nào để bỏ qua GUI trong ứng dụng MFC nếu các tùy chọn dòng lệnh tồn tại?

Trả lời

3

MFC thiết lập một lớp sẽ được gọi là C [Tên ứng dụng của bạn] Ứng dụng (ví dụ: CExampleApp) lưu trữ trong [Tên ứng dụng của bạn] .h/.cpp (ví dụ: Example.h/.cpp) Tại đây bạn sẽ có một chức năng được gọi là "InitInstance" (một lần nữa được tạo tự động bởi MFC). Nếu bạn đã tạo ra một ứng dụng Dialog dựa sau đó bạn sẽ có một chút mã mà trông như thế này trong hàm:

CExampleDlg dlg; 
m_pMainWnd = &dlg; 
INT_PTR nResponse = dlg.DoModal(); 
if (nResponse == IDOK) 
{ 
    // TODO: Place code here to handle when the dialog is 
    // dismissed with OK 
} 
else if (nResponse == IDCANCEL) 
{ 
    // TODO: Place code here to handle when the dialog is 
    // dismissed with Cancel 
} 

Cụ thể là "dlg.DoModal()" gọi sẽ gọi cửa sổ hộp thoại của bạn. Nếu bạn tránh điều đó thì GUI sẽ không bao giờ bắt đầu.

Nếu bạn đang sử dụng một ứng dụng MDI sau đó bạn sẽ có một số mã như thế này:

// create main MDI Frame window 
CMainFrame* pMainFrame = new CMainFrame; 
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME)) 
    return FALSE; 
m_pMainWnd = pMainFrame; 

pMainFrame->ShowWindow(m_nCmdShow); 
pMainFrame->UpdateWindow(); 

Điều này tạo ra và thấy cửa sổ chính của bạn. Tránh điều này và không có cửa sổ nào được tạo. Tuy nhiên, bạn PHẢI trả về FALSE từ hàm InitInstance, mặc dù nó sẽ nhập vào máy bơm ứng dụng.

+0

Trong trường hợp của tôi, tôi cần 'LoadFrame()', nhưng mặc dù tôi không gọi 'ShowWindow()', khung sẽ nhấp nháy. Tôi thấy rằng bằng cách gọi 'CWinAppEx :: m_bLoadWindowPlacement = false;' ngay trước 'LoadFrame()' bạn sẽ không có cửa sổ và không nhấp nháy. – mateuscb

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