카테고리 없음

[FdF] MiniLibX mlx_expose_hook

Or71nH 2022. 6. 22. 17:44
void mlx_expose_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
{
  [(id)(win_ptr->winid) setEvent:12 andFunc:funct_ptr andParam:param];
}

이거 화면이 클릭됫을때 활성화 되는거다

 

예를들어 롤이 화면 밑으로 내려갓을때는 작동 안하다가 화면 띡 키면 보여주는거와 비슷

 

예제 이다 걍 하다보면 뭔느낌인지암

#include <stdio.h>  // printf()
#include <stdlib.h> // exit()
#include "include/mlx.h"

#define NOT_USE 0     // 안씀

typedef struct s_mouse
{
	int	mouse_keycode;

	int x;				// x값
	int y;				// y값

	int draw_x;			// x값
	int draw_y;			// y값
}	t_mouse;

typedef	struct s_param // 키 값을 입력 받고 정해진 동작을 수행했는지
{                      // 여부를 판단하기 위해 선언하였다.
	int x;               // x값
	int y;               // y값
	int z;				 // y값
    
	t_mouse	mouse;

    void	*mlx_ptr;
    void	*win_ptr;
} t_param;

void	*ft_memset(void *b, int c, long unsigned int len)
{
	unsigned char	*ptr;

	ptr = (unsigned char *)b;
	while (len-- > 0)
		*ptr++ = c;
	return (b);
}

int expose_win(t_param *param)
{
	printf("%p\n", param);
}

int main(void)
{
	t_param *param;
	
	param = (t_param *)malloc(sizeof(t_param));
	ft_memset(param, 0, sizeof(t_param));
	param->mlx_ptr = mlx_init();
	param->win_ptr = mlx_new_window(param->mlx_ptr , 300, 300, "Hello, World!");
	printf("param->mlx_ptr :%p \nparam->win_ptr : %p  \nparam : %p \n",param->mlx_ptr,param->win_ptr, param);
	printf("======\n");
	mlx_expose_hook(param->win_ptr, &expose_win, param);
	printf("======\n");
	mlx_loop(param->mlx_ptr);
	int a = mlx_clear_window(param->mlx_ptr, param->win_ptr);
	printf("%d",a);
	return (0);
}