Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

WinApi на C++

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
--Erick--



Зарегистрирован: 05.02.2006
Сообщения: 3

СообщениеДобавлено: Пн Апр 17 2006 14:52    Заголовок сообщения: WinApi на C++ Ответить с цитатой

люди .. покажите, плиз, пример WinApi на C++ Crying or Very sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sniper::p



Зарегистрирован: 04.10.2005
Сообщения: 237
Откуда: rus/73

СообщениеДобавлено: Пн Апр 17 2006 21:44    Заголовок сообщения: Ответить с цитатой

Хм... странный вопрос... есть до фига ссылок и вообще инфы. Например, почти все программирование на VC++ без MFC (да и с ним) сводится к WinAPI
_________________
Нет предела совершенствованию
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
NewFork



Зарегистрирован: 28.02.2005
Сообщения: 73

СообщениеДобавлено: Вт Май 16 2006 08:08    Заголовок сообщения: Re: WinApi на C++ Ответить с цитатой

--Erick-- писал(а):
люди .. покажите, плиз, пример WinApi на C++ Crying or Very sad

Каков вопрос, таков ответ. Вот тебе маленький кусочек из программы, с использованием АПИ Laughing Laughing Laughing Laughing Laughing
Код:
HRESULT
GetFileName(BSTR FAR* pbstrFileName)
{
    OLECHAR buf[1024];
    BSTR bstrFileName;

#ifdef _MAC

    int i;
    Point pt;
    long dirID;
    char *p, *q;
    SFReply sfr;
    SFTypeList sftl;
    short sRefNumReal;

    SetPt(&pt, 100, 100);
    //sftl[0] = 'OTLB';
    sftl[0] = 0; // currently allow all file types

    SFGetFile(pt, NULL, NULL, -1, sftl, NULL, &sfr);

    if(!sfr.good)
      return ResultFromScode(E_FAIL);

    // translate sfr.vRefNum into a dirID
    {
   WDPBRec wdpbr;

   wdpbr.ioWDIndex   = 0;
   wdpbr.ioVRefNum   = sfr.vRefNum;
   wdpbr.ioWDVRefNum = 0;
   wdpbr.ioWDIndex   = 0;
   wdpbr.ioWDProcID  = 0;
   wdpbr.ioNamePtr   = (StringPtr)buf;

   if(PBGetWDInfoSync (&wdpbr) != noErr)
     return ResultFromScode(E_FAIL);

   sRefNumReal = wdpbr.ioWDVRefNum;

dirID = wdpbr.ioWDDirID;
    }

    {
   Str255 stDir;
   CInfoPBRec pb;
   DirInfo *pdirinfo = (DirInfo*)&pb;
   char rgchTemp[256]; // REVIEW: what should the size be?

   pdirinfo->ioNamePtr = stDir;
   pdirinfo->ioVRefNum = sRefNumReal;
   pdirinfo->ioDrParID = dirID;
   pdirinfo->ioFDirIndex = -1;  // get info on a dir

   buf[0] = '\0';

   // loop until we hit the root dir
   do{
     pdirinfo->ioDrDirID = pdirinfo->ioDrParID;
     if(PBGetCatInfoSync (&pb) != noErr)

    return ResultFromScode(E_FAIL);
     strncpy(rgchTemp, (char*)stDir, 64);
     p2cstr((StringPtr)rgchTemp);
     strcat(rgchTemp, ":");
     strcat(rgchTemp, buf);
     strcpy(buf, rgchTemp);
   }while(pdirinfo->ioDrDirID != fsRtDirID);

    }

    q = (char*)sfr.fName;
    i = (int)*q++;
    p = &buf[strlen(buf)];
    while(i-->0)
      *p++ = *q++;
    *p = '\0';

    if((bstrFileName = SysAllocString(buf)) == NULL)
      return ResultFromScode(E_OUTOFMEMORY);

#else

    OPENFILENAME ofn;                         

    memset(&ofn, 0, sizeof(OPENFILENAME));
    ofn.lStructSize  = sizeof(OPENFILENAME);
    ofn.hwndOwner    = g_hwnd;
    ofn.lpstrFile    = (LPTSTR) &buf;
    ofn.nMaxFile     = sizeof(buf);
    *buf = OLESTR('\0');
    ofn.lpstrFilter  = TSTR("Type Libraries\0*.tlb\0\0");
    ofn.nFilterIndex = 1;
    ofn.Flags        = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_SHAREAWARE;
    if(GetOpenFileName(&ofn) == 0){

      // REVIEW: we can probably do something smarter with this error
      DWORD dwerr = CommDlgExtendedError();

      return ResultFromScode(E_FAIL);
    }
#if defined(WIN32) && !defined(UNICODE)
    OLECHAR szFileW[_MAX_PATH];
    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED,
         ofn.lpstrFile, -1, szFileW, _MAX_PATH);
    if((bstrFileName = SysAllocString(szFileW)) == NULL)
      return ResultFromScode(E_OUTOFMEMORY);
#else
    if((bstrFileName = SysAllocString(ofn.lpstrFile)) == NULL)
      return ResultFromScode(E_OUTOFMEMORY);
#endif

#endif

    *pbstrFileName = bstrFileName;

    return NOERROR;
}

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...