logo
Литература_1 / photon_old

Полный пример приложения

И теперь мы можем использовать наши вновь приобретённые знания о ресурсах и ответных реакциях для создания более функциональной версии образца приложения, данного выше. Используя ресурсы, мы можем дать виджету кнопки те же размеры, что и окну, и задать, какой шрифт использовать для текста надписи. Мы можем также задать ответную реакцию, исполняемую при нажатии кнопки. Мы сделаем ответную реакцию, которая будет отображать простое сообщение и завершаться.

Вот полный текст программного кода нашего образца программы с этими изменениями:

#include <stdio.h>

#include <stdlib.h>

#include <Pt.h>

int main( int argc, char *argv[] ) {

PtArg_t args[3];

int n;

PtWidget_t *window;

int push_button_cb( PtWidget_t *, void *, PtCallbackInfo_t *);

PtCallback_t callbacks[] = {{push_button_cb, NULL}};

char Helvetica14[MAX_FONT_TAG];

if (PtInit(NULL) = = -1) PtExit(EXIT_FAILURE);

window = PtCreateWidget(PtWindow, Pt_NO_PARENT, 0, NULL);

n = 0;

PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, "Нажмите для выхода", 0);

/* Использовать, если доступен, шрифт 14-пунктовый жирный Helvetica */

if (PfGenerateFontName("Helvetica", 0, 14, Helvetica14) = = NULL) {

perror("Невозможно сгенерировать имя шрифта");

}

else {

PtSetArg(&args[n++], Pt_ARG_TEXT_FONT, Helvetica14, 0);

}

PtSetArg(&args[n++], Pt_CB_ACTIVATE, callbacks, sizeof(callbacks)/sizeof(callbacks[0]));

PtCreateWidget(PtButton, window, n, args);

PtRealizeWidget(window);

PtMainLoop();

return (EXIT_SUCCESS);

} // main()

int push_button_cb(PtWidget_t *w, void *data, PtCallbackInfo_t *cbinfo) {

printf( "Я была нажата\n" );

PtExit( EXIT_SUCCESS );

/* Эта строка никогда не будет исполняться, но она делает счастливым компилятор */

return( Pt_CONTINUE );

}

  1. Yandex.RTB R-A-252273-3
    Yandex.RTB R-A-252273-4