C4上怎么打开键盘获取输入?
c4droid吧
全部回复
仅看楼主
level 11
2014年09月05日 04点09分 1
level 13
不懂
2014年09月05日 05点09分 2
额,说漏了,用SDL2时打开键盘获取输入
2014年09月05日 06点09分
level 12
//给你个参考
#include <stdio.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
#include <SDL2/SDL_test_common.h>
SDLTest_CommonState *state = NULL;
SDL_Renderer *renderer = NULL;
SDL_Texture *edit = NULL;
TTF_Font *font = NULL;
char text[1024] = {0};
int edit_w = 0, edit_h = 0;
void renderText(const char *text)
{
SDL_Surface *temp;
SDL_Color color = { 0, 0, 0 };
temp = TTF_RenderUTF8_Solid(font,text,color);
edit_w = temp->w;
edit_h = temp->h;
SDL_free(edit);
edit = SDL_CreateTextureFromSurface(renderer,temp);
SDL_FreeSurface(temp);
}
void redraw()
{
SDL_Rect temp;
SDL_SetRenderDrawColor(renderer,0xFF,0xFF,0xFF,0xFF);
SDL_RenderClear(renderer);
temp.x = 20;
temp.y = 20;
temp.w = edit_w;
temp.h = edit_h;
SDL_RenderCopy(renderer,edit,NULL,&temp);
SDL_RenderPresent(renderer);
}
int main(int argc,char *argv[])
{
SDL_Event event;
SDL_Rect rect;
int done;
state = SDLTest_CommonCreateState(argv,SDL_INIT_VIDEO);
2014年09月05日 08点09分 5
level 12
state->window_flags |= SDL_WINDOW_RESIZABLE&&SDL_WINDOW_FULLSCREEN;
SDLTest_CommonInit(state);
renderer = state->renderers[0];
TTF_Init();
font = TTF_OpenFont("/system/fonts/DroidSansFallback.ttf",16);
renderText("请输入文本!");
SDL_StartTextInput();
done = 0;;
while(!done)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_TEXTINPUT:
strcat(text,event.text.text);
renderText(text);
break;
case SDL_TEXTEDITING:
break;
case SDL_MOUSEMOTION:
break;
case SDL_QUIT:
done = 1;
break;
default:;
}
}
redraw();
}
SDL_StopTextInput();
TTF_CloseFont(font);
TTF_Quit();
if(edit) SDL_free(edit);
SDLTest_CommonQuit(state);
return 0;
}
2014年09月05日 08点09分 6

2014年09月05日 09点09分
怎么知道键盘是否展开?
2014年09月05日 15点09分
level 13
SDL_StartTextInput();
2014年09月05日 08点09分 7

2014年09月05日 09点09分
level 11
这段什么意思?
state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
state->window_flags |= SDL_WINDOW_RESIZABLE && SDL_WINDOW_FULLSCREEN;
SDLTest_CommonInit(state);
renderer = state->renderers[0];
2014年09月05日 12点09分 8
2014年09月05日 12点09分
回复 风飞飘扬是本人 :可以无视,只是另一种创建窗口跟渲染器的方法。你也可以用SDL_CreateWindows
2014年09月05日 14点09分
level 12
SDL好像有个专门的函数
   --我本是山中一株包治百病的板蓝根
2014年09月05日 15点09分 9
1