分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
#001 boolAutocompleteEdit::OnKeyDownOnlyWritable(TCHAR key,
#002 UINT repeat_count,
#003 UINT flags) {
#004 // NOTE: Annoyingly,ctrl-alt-<key> generates WM_KEYDOWN rather than
#005 // WM_SYSKEYDOWN, so weneed to check (flags & KF_ALTDOWN) in various places
#006 // in this function evenwith a WM_SYSKEYDOWN handler.
#007
#008 int count = repeat_count;
#009 switch (key) {
#010 case VK_RETURN:
#011 AcceptInput((flags & KF_ALTDOWN) ?NEW_FOREGROUND_TAB : CURRENT_TAB,
#012 false);
#013 return true;
#014
#015 case VK_UP:
#016 count = -count;
#017 // FALL THROUGH
#018 case VK_DOWN:
当用户按下回车键,就会调用上面的函数OnKeyDownOnlyWritable,并且在VK_RETURN按键处理回车的事件,接着就是调用函数AcceptInput来处理。
这个函数的代码如下:
#001 voidAutocompleteEdit::AcceptInput(WindowOpenDisposition disposition,
#002 bool for_drop) {
#003 // Get the URL andtransition type for the selected entry.
#004 PageTransition::Typetransition;
#005 boolis_history_what_you_typed_match;
#006 std::wstringalternate_nav_url;
保存当前获取的URL连接串。
#007 const std::wstringurl(GetURLForCurrentText(&transition,
#008 &is_history_what_you_typed_match,
#009 &alternate_nav_url));
#010 if (url.empty())
#011 return;
#012
判断是否重新加载当前的网页。
#013 if (url ==permanent_text_) {
#014 // When the user hit enter on the existingpermanent URL, treat it like a
#015 // reload for scoringpurposes. We could detect this by justchecking
#016 //user_input_in_progress_, but it seems better to treat "edits" thatend
#017 // up leaving the URLunchanged (e.g. deleting the last character and then
#018 // retyping it) asreloads too.
#019 transition =PageTransition::RELOAD;
#020 } else if (for_drop ||((paste_state_ != NONE) &&
#021 is_history_what_you_typed_match)) {
下面是打开一个新的连接。
#022 // When the user pastedin a URL and hit enter, score it like a link click
#023 // rather than a normaltyped URL, so it doesn't get inline autocompleted
#024 // as aggressivelylater.
#025 transition =PageTransition::LINK;
#026 }
#027
这里是调用OpenURL函数打开这个连接的内容。
#028 OpenURL(url, disposition,transition, alternate_nav_url,
#029 AutocompletePopupModel::kNoMatch,
#030 is_keyword_hint_ ?std::wstring() : keyword_);
#031 }
这段代码的流程很清楚,就是先通过判断按键输入,是否按下回车键,如果是回车键就调用函数AcceptInput处理,然后在这个函数就判断这个连接是否已经打开了,如果已经打开,只需要重新加载就行了,如果不是当前的,就是打开一个新的连接。下一次再来分析OpenURL函数是怎么样通过连接来重新加载,还是打开一个新网页。