CallBack функции в консольном приложении C++

Рейтинг: 2Ответов: 1Опубликовано: 24.05.2011

Если в консольном приложении ожидается ввод с клавиатуры (cin<<) а в этот момент происходит вызов Callback функции этого приложения из вне, то будет ли она вызвана!? Или здесь необходимо использовать многопоточное программирование?!

Добавлено.

#include "dde_server_for_quik.h"
#include "iostream.h"

int main()
{  
    char **ArrNameTabs;
    unsigned int AmountTabs;
    char *NameTab_1="DDE_TAB_BIDASSK";
    char *NameTab_2="tab2";
    AmountTabs=2;
    ArrNameTabs=new char *[AmountTabs];
    ArrNameTabs[0]=NameTab_1;
    ArrNameTabs[1]=NameTab_2;

    int Result;
    Result=InitServerDDE(ArrNameTabs,AmountTabs);
    int a;
    cin>>a;
    return(0);
}

HDDEDATA EXPENTRY DdeCallback(UINT wType, UINT fmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2) 
{
    m1:
    goto m1;
}

Добавлено.

Это тестовое консольное приложение, тестируется сам DDE сервер, код находится в другом cpp файле, при помощи функции InitServerDDE происходит его инициализация, DdeCallback также находится в другом файле, в процессе инициализации адрес DdeCallback передаётся в WINAPI, и когда клиент пытается подключится (к примеру) к DDE серверу, эта функция должна быть вызвана (я так понимаю, при помощи ОС). В теле DdeCallback конечно же не бесконечный цикл! - это я пытался выяснить передаётся ли туда управление (если да, то ядро загрузится на 100%), но управление увы не передаётся! Быть может потому, что основной (и единственный) поток занят обработкой cin! И Винда не может передать управление другой функции в этом же потоке!?

Ответы

Ответов пока нет.