如何用API实现一个窗口总在最前但不获得焦点

如何用API实现一个窗口总在最前但不获得焦点,第1张

setAlwaysOnTop(boolean isAlwaysOnTop);方法可以实现,你可以试试,当你创建的窗口比较多的时候,可以在每个窗口实现代码中使用这个语句,通过合理地将参数设置成true或者false一定能达到你想要的效果。

pTalkDlg->Create(IDD_DIALOG_TALK,AfxGetMainWnd()); 这句的AfxGetMainWnd()改成this试一下

=====================================================================

我能看出来,和QQ差不多吧A里面有用于判断聊天窗口是否打开的变量

那这样试下,用pTalkDlg->ShowWindow(SW_MINIMIZE)最小化后加一句SetForegroundWindow();

建议用个什么JS框架吧,就很简单了。

手写的话你div的样式position:absoute就可以自己控制位置了,通过top,left,right,bottom等。然后有个z-index属性,最大是9999,比其他div大就不会被其他div遮住

建议用JQ代码来实现

<script src="//ajaxgoogleapiscom/ajax/libs/jquery/183/jqueryminjs"></script>

<script type="text/javascript">

$(document)ready(function(){

$(":text")attr("readonly","readonly");

$(":text")foucs(function(){

$(this)blur();

});

});

因为当文本域只读时,在部分浏览器中是不能获取焦点的,所以感觉$(":text")foucs(function(){有点多余。

这儿只给一个文本域只读的例子

如果还要添加其它的,比如密码域,可以把$(":text")修改为$(":text,:password")

是不是很简单

当然你也可以直接在input或其它文本域中写入,比如

<input type="text" readonly="readonly"></input>

如果是想说,题主自己编写了一个有两个窗口的程序,在第一个窗口时d出第二个窗口,但焦点还在第一个窗口上,那么只需要在新的窗口 Show() 之后,thisFocus(); 就可以继续让焦点在本窗口上了。

● 如果是想说,向QQ的右下角消息框一样,无论现在用户的焦点在哪个窗口,消息框d出后都不影响焦点的变化,那么有两种方法:

要么重写需要d出的窗体的事件:

1

2

3

4

5

6

7

8

9

10

11

protected override CreateParams CreateParams

{

get

{

const int WS_EX_NOACTIVATE = 0x08000000;

CreateParams cp = baseCreateParams;

cpExStyle |= WS_EX_NOACTIVATE;

return cp;

}

}

// CreateParams 在 SystemWindowsFormsControls 命名空间下

要么调用系统钩子:

1

2

3

4

5

6

7

8

9

10

11

// 引用系统钩子

[DllImport("user32dll")]

public static extern IntPtr GetActiveWindow();

[DllImport("user32dll")]

public static extern IntPtr SetActiveWindow(IntPtr hwnd);

// 在窗口d出时做以下处理

IntPtr activeForm = GetActiveWindow(); // 先得到当前的活动窗体

new form2Show(false); // d出新窗体

SetActiveWindow(activeForm); // 在把焦点还给之前的活动窗体

可以这样:

主窗体

Form2;

子窗体

Form1;

form2加载后,隐藏,再模态加载form1,然后在form1中用form2Visible=true来显示form2;因为form2是form1的父窗口,不关闭form1,form2是不能获得焦点的。

以上就是关于如何用API实现一个窗口总在最前但不获得焦点全部的内容,包括:如何用API实现一个窗口总在最前但不获得焦点、窗口无法获得焦点、js如何d出无标题栏无边框的子窗口 并且能够阻止父窗口获得焦点 并且能够和父窗口互相传值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9534252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存