小技法:防止对话框中的编辑框内容自动被选中

小技法:防止对话框中的编辑框内容自动被选中

作者:BlogUpdater |  时间:2020-07-20 |  浏览:151 |  评论已关闭 条评论

在默认情况下,当用户在对话框界面按下Tab按键将输入焦点切换到一个编辑框时,编辑框中的文本内容会被自动选中。
为什么会有这样的行为呢?
因为当焦点切换到编辑框时,编辑框窗口会收到WM_GETDLGCODE消息,如果我们在处理这个消息时候,将DLGC_HASSETSEL这个标志去掉,则可以阻止这个默认行为。

那么,如何去掉这个标志呢?如下图所示:

在上面的代码中,我们在WM_GTTDLGCODE消息处理函数中移除了DLGC_HASSETSEL这一标志。

下图是我们的对话框窗口过程:

当我们在收到对话框的WM_INITDIALOG消息时,我们将自定义的子类化窗口过程设置到了窗口上。

下面是我们的程序入口点。

总结
从上面的代码来看,实现我们标题所说的功能其实并不复杂。但是我想这个相对完整的例子代码,也许可能对某些人有点帮助。
另外,通过这个例子,我们也可以看到如何使用SetWindowSubclass这个API函数。

评论已关闭。