Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, Smooky, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Как вызвать например ф-цию MessageBox() из С-шного кода?
S>Берёшь и просто вызываешь:
S>Может я не понял вопроса!?
Может имелось ввиду :
#include <windows.h>
?!
Ничто не ограничивает полет мысли программиста так, как компилятор.
Здравствуйте, F_1985, Вы писали: F_>Ув. Centaur если не согласны, то будь так добры, написать как правилно.
Я тоже не согласен. Зачем делать какую-то промежуточную функцию? Можно вызвать WinAPI-шную функцию напрямую:
#include <windows.h>
int main() // или int __stdcall WinMain(HINSTANCE hExe, HINSTANCE hPrevExe, char pCommandLine[], int ShowType)
{
MessageBox(NULL, "текст сообщения", "заголовок окна", MB_OK);
return 0;
}
Здравствуйте, F_1985, Вы писали: F_>Спасибо! Сегодня на свежую голову проверил, действительно работает без промежуточных ф-й. F_>Такие ф-и я использовал не для целей вызова API — функций. На это были другие потребности, но немного похожи. Вот так и ошибся.
Функции-обёртки разумно использовать для переносимости. Если по всему коду разбросаны вызовы WinAPI-шных функций, то тогда получается, что код гвоздями прибит к Windows (точнее, к WinAPI; можно реализовать WinAPI и в другой операционной системе). Вместо этого можно загнать WinAPI в функции-обёртки, например:
#include <stdio.h>
#include <stdarg.h>
#include <assert.h>
#include <windows.h>
void DPrint(const char pTemplate[], ...)
{
char Buf[1024]; // кстати, буфер фиксированной длины - сомнительная идея :shuffle:
va_list Items;
va_start(Items, pTemplate);
int Len = vsprintf(Buf, pTemplate, Items);
assert(Len < 1024);
va_end(Items);
OutputDebugString(Buf); // WinAPI-шная функция
}
И использовать по всему коду уже свою функцию:
int main()
{
int n = 3;
DPrint("n = %i\n", n);
const char* pName = "abc";
DPrint("name = %s\n", pName);
return 0;
}
Но это уже вопрос не технический (как вызвать WinAPI-шную функцию), а идеологический (изоляция вызовов WinAPI-шных функций), то есть совсем для другого форума – «Архитектура программного обеспечения».