Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

использование MFC классов в WinAPI приложениях

26K
08 апреля 2007 года
Atomic
8 / / 06.04.2007
Вообще-то в WinAPI я ориентируюсь намного лучше. MFC только вот начал изучать, все думаю переходить или нет.. насколько это в работе пригодится итд.
В WinAPI приложении (которое не MFC) можно вызывать обьекты классов например CFileDialog ? Вообще получилось его вызвать только через одно место :) И выдает ошибку при его открытии при отладке. Впрочем если пропустить то все работает... Я сделал так -

Код:
#include "stdafx.h"
#include <afxwin.h>
#include <afxext.h>
#include "resource.h"
BOOL CALLBACK   WndProc(HWND, UINT, WPARAM, LPARAM);

void OpenMyFile(char *,CWnd *);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR    lpCmdLine,
                     int       nCmdShow)
{
    HWND    hWnd= CreateDialog(hInstance,LPCSTR(IDD_MAINWINDOW),0,WndProc);
            ShowWindow(hWnd,SW_SHOW);

    // Main message loop:--------------------
    MSG msg;
   
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return (int) msg.wParam;
}


BOOL CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
char szFilename[255];
    switch (message)
    {
    case WM_INITDIALOG:
        UpdateWindow(hWnd);
        break;
    case WM_GETMINMAXINFO:
        break;
    case WM_SIZE:
        break;
    case WM_CLOSE:
        DestroyWindow(hWnd);
        PostQuitMessage(0);
        break;
    case WM_COMMAND:
        switch (wParam){
            case IDC_OPENFILE:
                GetDlgItemText(hWnd,IDC_COMBO1,szFilename,255);
                OpenMyFile(szFilename,0);
                break;}
        break;
    }
    return false;
}

void OpenMyFile(char * filename,CWnd * cwnd)
{
CFileDialog MyOpenFile(true,"",filename,4|2,"",cwnd);
MyOpenFile.DoModal();
return;
}


Вот такая вот заморочка. Чтобы в изначально WinAPI приложении использовать MFC вызовы. Диалог ОТКРЫВАЕТСЯ. При этом пишет ошибку (потому что передаю ему ноль вместо поинтера на обьект).После чего он работает. Честно говоря еще не искал такой инфы в инете.. хотел сам сделать. Но вот наткнулся на СWnd этот. Думаю откуда мне его взять :D
4.5K
08 апреля 2007 года
e-XperT
127 / / 04.07.2006
Цитата: Atomic

В WinAPI приложении (которое не MFC) можно вызывать обьекты классов например CFileDialog ?


В свойствах проекта надо поставить "Use MFC in static library" например или в динамических библиотеках (что предпочтительней) и испольльзовать MFC
Наверно правильнее было бы использовать OpenMyFile(szFilename,NULL); ?!

26K
09 апреля 2007 года
Atomic
8 / / 06.04.2007
Так все выставлено. :) Такие вещи я и сам знаю. СFileDialog работает. Но перед октрытием пишет что-то.. если пропустить то открывается и все ок. Просто хотел убрать эту ошибку... ну я и передаю ноль туда.. уже по всякому пробовал.. не выходит. когда я пишу под MFC прогу я там ставлю this (тоесть текущий обьект) а поскольку тут нет классов то и this не пашет. седня попробую через класс сделать общение с MFC... может поможет... создам свой класс - буду пихать в него все что касается MFC и вызывать методы потом. Честно говоря мне на API писать проще. А то что проще сделать на MFC хочу вызывать. С MFC пока не умею достаточно хорошо разбираться..
355
09 апреля 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
CWnd::FromHandle
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог