C++Tab键实现自动补全输入功能(三)

2014-04-06 17:34:46 · 作者: · 浏览: 227

 

  char*pri_get_supply=get_attach(store_compare_[i],pri_temp_input);

  if(NULL!=pri_get_supply)

  {

  if(tab_count>i_catch_times)

  {

  i_catch_times++;

  continue;

  }

  //clear

  SetConsoleCursorPosition(hOut,curser_position);

  stringout_put_string="";

  write(out_put_string.c_str());

  SetConsoleCursorPosition(hOut,curser_position);

  write(store_compare_[i]);

  break;

  }

  }

  deletepri_temp_input;

  pri_temp_input=NULL;

  i_store_input_count-=1;

  return;

  }

  char*get_attach(constchar*stacks_,constchar*needle_)

  {

  char*pri_string_stack=(char*)stacks_;

  char*pri_string_needle=(char*)needle_;

  char*pri_string=strstr(pri_string_stack,pri_string_needle);

  returnpri_string;

  }

  /*---------------------------------------------------------*/

  voidconsole_start()

  {

  AllocConsole();

  DWORDdwConsoleMode;

  GetConsoleMode(NULL,&dwConsoleMode);

  dwConsoleMode^=ENABLE_LINE_INPUT;

  dwConsoleMode^=ENABLE_ECHO_INPUT;

  //wConsoleMode^=ENABLE_AUTO_POSITION;

  SetConsoleMode(NULL,dwConsoleMode);

  constchar*message="welcome!teststarted.atuhorbyzhangpengju\n";

  write(message);

  }

  voidconsole_end()

  {

  FreeConsole();

  }

  voidwrite(constchar*message,intlength)

  {

  if(length<=0)

  {return;

  }

  WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),message,length,NULL,NULL);

  }

  voidwrite(constchar*message)

  {

  intlength=strlen(message);

  WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),message,length,NULL,NULL);

  }

  voidread(char*buffer,size_tsize)

  {

  DWORDnNumberOfCharsToRead;

  BOOLresult=ReadConsoleA(GetStdHandle(STD_INPUT_HANDLE),buffer,size,&nNumberOfCharsToRead,NULL);

  buffer[nNumberOfCharsToRead-2]=0;

  }

  2.在vs2012下测试结果是可以的。就不给贴图了。

  运行程序,测试输入,t,然后切换tab键就可以看见有自动补齐的功能。

  输入_,有不同的单词供你选择,然后回车,可换其他测试。

  不足之处,请多指教。