注册 登录
编程论坛 C++教室

请教如何用方向键在文本输入框之间切换焦点?

yangfrancis 发布于 2016-01-03 14:01, 2849 次点击
小可近日写一个填字游戏,将二维数组的文本输入框控件(EDIT)排成了一个矩阵。现在希望能够实现用方向键来切换当前活动文本框。例如当前输入光标在grid[2][3],我想在按了右箭头之后让grid[3][3]获得输入焦点,如果是按了下键头则让grid[2][4]获得输入焦点。请问应该怎么实现?
我把自己知道的消息试了一圈儿,发现输入框得到焦点之后都触发不了这些消息。在此请教。(win32应用程序,非MFC)
9 回复
#2
诸葛欧阳2016-01-03 17:08
切换焦点应该是有个focus函数貌似
#3
yangfrancis2016-01-03 22:39
回复 2楼 诸葛欧阳
是有的,叫SetFocus,但不知道在按下方向键时触发什么消息来执行,因为一旦一个文本框获得焦点,主窗体就失去了焦点,也就无法捕捉事件了。
    现在我暂时另采取了一种方案,但就这个问题而言还是没有解决。
#4
天使梦魔2016-01-03 23:11
窗口消息泵,WM_KEYDOWN消息。
主窗口失去焦点?子窗口怎么注册的,拥有独立的线程句柄?
#5
rjsp2016-01-04 08:32
假如你的Edit中内容是“a|b”,其中'|'是光标,当你按右方向键时,是想变成“ab|”,还是其它Edit获得焦点?
你先想明白这一点,后可以在PreTranslateMessage中截获发给Edit的键盘消息


[此贴子已经被作者于2016-1-4 13:50编辑过]

#6
yangfrancis2016-01-04 12:32
回复 5楼 rjsp
正是要在不同文本框之间切换。请问在PreTranslateMessage中截获给EDIT的消息具体怎么做呢?普及一个。
#7
rjsp2016-01-04 13:49
回复 6楼 yangfrancis
if( pMsg->message == WM_KEYDOWN )
{
    switch( pMsg->wParam )
    {
    case VK_LEFT:
        ……
        break;
    case ……

#8
aiyulunhui2016-01-04 17:24
WM_SETFOCUS 和WM_KILLFOCUS,参数可以传递焦点
#9
yangfrancis2016-01-04 21:13
回复 7楼 rjsp
这个东西果真好使。学习了。谢谢。
#10
yangfrancis2016-01-04 21:13
感谢各位的关注。
1