Windowless MFC-приложение
От: Kazakovsky  
Дата: 05.05.03 05:09
Оценка:
Привет!

Как создать Windowless приложение и подключить к нему MFC в Visual C++ 6.0 ?
Зачем это надо — хочу чтобы мое приложение имело только иконку в трее.

Есть задумка сделать Windowless-приложение из SDI MFC Application, в вызове CWinApp::OnInitInstance сделать m_pMainWnd->ShowWindow(SW_HIDE) — окно вроде не прорисовывается, однако появление рамки окна чуть заметно, и это не хорошо. Кстати, кто знает способ исключить появление рамки окна при m_pMainWnd->ShowWindow(SW_HIDE) ?

Может еще есть какой элегантный способ создания Windowless-приложения?

С уважением,
Алексей Казаковский
Re: Windowless MFC-приложение
От: template  
Дата: 05.05.03 05:54
Оценка:
Здравствуйте, Kazakovsky, Вы писали:

K>Привет!


K>Как создать Windowless приложение и подключить к нему MFC в Visual C++ 6.0 ?

K>Зачем это надо — хочу чтобы мое приложение имело только иконку в трее.

K>Есть задумка сделать Windowless-приложение из SDI MFC Application, в вызове CWinApp::OnInitInstance сделать m_pMainWnd->ShowWindow(SW_HIDE) — окно вроде не прорисовывается, однако появление рамки окна чуть заметно, и это не хорошо. Кстати, кто знает способ исключить появление рамки окна при m_pMainWnd->ShowWindow(SW_HIDE) ?


K>Может еще есть какой элегантный способ создания Windowless-приложения?


K>С уважением,

K>Алексей Казаковский
Когда вызывается CreateWindow указать размеры окна или за пределами экрана или с шириной и высотой рамки равной 0.
Но это не решение проблемы. Если бы узнать зачем это "windowless"?
А диалог с пользователем?
Re: Windowless MFC-приложение
От: fyodor000 Россия  
Дата: 06.05.03 09:40
Оценка:
Попробуй поставить окну Parent в HWND_MESSAGE (см. в MSDN статью "Window Features", раздел "Message-Only Windows")

---
fyodor
Re: Windowless MFC-приложение
От: gwg-605 Россия  
Дата: 06.05.03 11:48
Оценка:
Здравствуйте, Kazakovsky, Вы писали:

BOOL CMFC1TestApp::InitInstance()
{
    m_nCmdShow = SW_HIDE ;

    AfxEnableControlContainer();

    // Standard initialization
    // If you are not using these features and wish to reduce the size
    //  of your final executable, you should remove from the following
    //  the specific initialization routines you do not need.

#ifdef _AFXDLL
    Enable3dControls();            // Call this when using MFC in a shared DLL
#else
    Enable3dControlsStatic();    // Call this when linking to MFC statically
#endif

    // Change the registry key under which our settings are stored.
    // TODO: You should modify this string to be something appropriate
    // such as the name of your company or organization.
    SetRegistryKey(_T("Local AppWizard-Generated Applications"));

    LoadStdProfileSettings();  // Load standard INI file options (including MRU)

    // Register the application's document templates.  Document templates
    //  serve as the connection between documents, frame windows and views.

    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
        IDR_MAINFRAME,
        RUNTIME_CLASS(CMFC1TestDoc),
        RUNTIME_CLASS(CMainFrame),       // main SDI frame window
        RUNTIME_CLASS(CMFC1TestView));
    AddDocTemplate(pDocTemplate);

    // Parse command line for standard shell commands, DDE, file open
    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

    // Dispatch commands specified on the command line
    if (!ProcessShellCommand(cmdInfo))
        return FALSE;

    // The one and only window has been initialized, so show and update it.
    m_pMainWnd->ShowWindow(m_nCmdShow);
    m_pMainWnd->UpdateWindow();

    return TRUE;
}


Болдом показано что нужно иметь в InitInstance().

Удачи,
Valery.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.