我想将一个表单附加到另一个窗口(另一个进程).我试着通过使用来做到这一点
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
setParentWindow(myWindowHwnd, newParentHwnd);
Run Code Online (Sandbox Code Playgroud)
这样做我的表格变得紧密,但也是看不见的.问题"附加窗口.."解决了WPF窗口的这个问题,基本上是通过使用
HwndSourceParameters parameters = new HwndSourceParameters();
...
HwndSource src = new HwndSource(parameters);
Run Code Online (Sandbox Code Playgroud)
我试图将它转移到我的表单,但我无法这样做(例如如何处理src.RootVisual = (Visual)window.Content;? - > 完整的源代码).
另一条评论说,我需要修改windows风格:
出于兼容性原因,SetParent不会修改其父级正在更改的窗口的WS_CHILD或WS_POPUP窗口样式.因此,如果hWndNewParent为NULL,则还应清除WS_CHILD位并在调用SetParent后设置WS_POPUP样式.相反,如果hWndNewParent不为NULL且窗口以前是桌面的子窗口,则应在调用SetParent之前清除WS_POPUP样式并设置WS_CHILD样式.
在这里,我错过了相应的API,我可以直接从C#中进行,还是让我DllImport再次使用另一个?
好或坏 - 不同进程之间的SetParent()win32 API建议不要在不同进程中附加窗口,但至少我想尝试.
题:
要使表单窗口可见,我需要做什么?如果方法WS_Child是正确的,我将如何设置它?或者WPF方法是否可行,但我如何将其应用于Windows窗体?
- 调查结果(后来添加) -
使用winAPI修改另一个应用程序的Windows样式显示如何从C#/ PInvoke修改样式
在这里找到所有窗口样式,底部是C#语法.
- 与Alan讨论的调查结果 -
我确实在Win XP上运行我的程序进行交叉检查(参见下面的Alan的回答和评论).至少我现在看到的东西.由于我已经添加了Alan的例子中的坐标,当我移动到左上角附近的另一个窗口时,我的窗口现在在记事本中闪耀.您仍然可以在记事本中看到键入的文本作为叠加层.在Win 7(32)下,我什么也看不见.
今天我将我的应用程序从Qt5.5移植到Qt5.6RC.在我的高dpi屏幕上运行它,小部件看起来很小.读完这个并设置QT_AUTO_SCREEN_SCALE_FACTOR to "1"至少它再次可用.
不过他们说:
从长远来看,应用程序应该适应未经修改的运行:
1)始终使用QPainter绘图API的qreal版本.
2)调整与屏幕大小相关的窗口和对话框.
3)用字体度量或屏幕大小计算的值替换布局和绘图代码中的硬编码大小.
并非所有样式表属性都支持em("..来自字体指标").不知道我如何在样式表中使用"屏幕尺寸"相对.此外,Qt Designer仅支持px许多地方,如下所示.
考虑到我不想放弃设计师和样式表,我有什么选择来创建真正的Qt雇佣应用程序?
相关(但没有回答我的问题)
1em在Qt世界中意味着什么:Qt qss中的大小"1em"是什么意思,如果没有字体大小的话?计算Google Map中坐标(lat/lon)之间像素距离的最佳方法是什么.我不是要问公里/英里的距离(因此我有一个图书馆),而是考虑当前的缩放系数,屏幕上的像素.
背景:我想绘制叠加而不重叠它们.所以我需要计算这些位置的偏移量.因此,在较低的缩放系数中,500 km的距离可能意味着叠加确实重叠,而在50 km处它们不会重叠.
当然,可以理解,不基于像素距离避免重叠的任何其他算法.
- 更新 -
猜猜是朝着聚类的方向发展,会检查这个:
- 更新 -
我最有可能在这里使用它:http://code.google.com/apis/maps/documentation/javascript/reference.html
google.maps.MapCanvasProjection.fromLatLngToDivPixel
Run Code Online (Sandbox Code Playgroud)
为了得到预测,我将在这里使用答案:
我正在寻找Google Map V3上下文菜单库.我在这里找到了一些代码示例
堆栈溢出问题谷歌地图v3 - 上下文菜单可用吗?四月也刚刚提出了上面的例子.因此,没有Gmap3添加一个简单的上下文菜单.
但也许有人将这些例子封装在一个可重用的库中,或者在此期间发现了一些东西.V2 显然有些东西.
- 更新时间2012-05-31 -
我找到了另一个http://googlemapsmania.blogspot.de/2012/04/create-google-maps-context-menu.html,但还没有时间对其进行测试.
C#,VS2010,WinForm应用程序:
有时我确实遇到了打开一些控件/表单时收到错误消息的问题.所有代码都编译并且应用程序正常运行.打开设计师的控件给了我:
设计器加载器没有提供根组件,但没有说明原因.
根据我的经验,我可以说,在我的代码中通常会出现一些未正确初始化的内容,例如,某个属性未设置在运行时以某种方式可用,但在设计人员打开时则无法设置.唯一的问题是,根本原因很难找到.
问:当设计人员在Visual Studio 2010中打开我的组件时,是否有机会以某种方式使用调试器?这将有很大帮助,解决问题很可能只需几分钟.
备注:为了清楚说明,我知道如何使用调试器;-),我只是不知道如何告诉VS2010的设计人员在调试模式下打开我的控件.
截至2010年9月2日,增加了:
谢谢你的帮助.基本上它是描述如何执行它的MSDN Library文章.
顺便说一句,使用这种方法,从符号加载(通过模块窗口)中排除一些东西是有帮助的,因为这将安全很多时间.
现在,如果必须弄清楚如何解决符号,那么我可以解决这个问题.....
Javascript中代码注释的正确方法是什么 - 与Java中的语法相同?哪些工具实际上会利用这些评论:
/*
* Add an element to the group
* @param {Object} overlayElement
* @param {Object} [element2] optional element
*/
Run Code Online (Sandbox Code Playgroud)
我找到了新的ReSharper的6(我写的JS在2010年的VisualStudio)提供了相同的意见,如C#,但仅限于功能体,像/// <param name="overlayElement"></param>
.ReSharper没有突出显示JS代码注释.
什么是最好的方式...?
我有两个子目录docroot,config在我的Qt项目中.每当我构建/调试项目时,都应将这些目录中的文件复制到构建目录中.
从/sf/answers/279384731/开始,可以使用INSTALLS(QtDoc),这似乎比运行复制命令容易得多(例如这里).这里描述了类似的方法.
config.path = $${DESTDIR}/config
config.files = config/*
docroot.path = $${DESTDIR}/docroot
docroot.files = docroot/*
INSTALLS += config docroot
Run Code Online (Sandbox Code Playgroud)
但是,当我在Qt Creator中运行构建时,没有任何反应.这在这里说,我需要运行make install.每当我构建时,我都能以某种方式从Qt Creator中自动触发/执行此操作.我总是需要最新版本的文件.
编辑:最终我用$$OUT_PWD而不是$$DESTDIR
从洛根原创评论这里 "刚一说明:我用$$OUT_PWD,而不是$$DESTDIR使其工作参考.$$OUT_PWD是程序内置到该文件夹,并且$$PWD是它在该程序正在从-换句话说内置的文件夹.pro文件是."
任何一个方便的复选框,但也不是灰色的(几乎不可见).
setEnabled(bool)哪些工作,但复选框然后是灰色的,几乎无法读取CheckBox类.setCheckable 也不起作用,它不允许我设置一个检查状态:
cb = this->ui->cb_RealWorld->isCheckable();
this->ui->cb_RealWorld->setCheckable(true);
this->ui->cb_RealWorld->setChecked(someValue);
this->ui->cb_RealWorld->setCheckable(cb);
Run Code Online (Sandbox Code Playgroud)所以我最好的方法是使用启用/禁用并接受灰色样式.
-------编辑-------
在样式表示例之后,我希望我可以设置禁用复选框的样式,例如启用的复选框.到目前为止失败了.更具体:更改示例中的图标对我来说不起作用,可能是因为我使用的是Windows,并且路径下的图标不可用,如示例所示.
PS:相关,但这里没有答案
在Qt Creator中是否存在类似于显式代码区域的折叠:
#pragma region Region_1
void Test() {}
void Test2() {}
void Test3() {}
#pragma endregion Region_1
Run Code Online (Sandbox Code Playgroud)
在WinForm应用程序C#4.0中,我有一个绑定到SortableBindingList的DataGridView.因此可以通过单击标题列进行排序 - 到目前为止一切正常;-)
问题是,所选行似乎被行号"记住".这是发生的事情:
A* <- "Selected"
B
C
Run Code Online (Sandbox Code Playgroud)
现在排序降序,C在顶部并选中.我想要选择A:
C* <- "Selected"
B
A <- "Want have"
Run Code Online (Sandbox Code Playgroud)
同样的情况也是如此,选择了多行.这有解决方法吗?
c++ ×3
javascript ×3
qt ×3
qt-creator ×3
c# ×2
winforms ×2
.net ×1
build ×1
c#-4.0 ×1
code-folding ×1
contextmenu ×1
datagridview ×1
google-maps ×1
pinvoke ×1
pragma ×1
qcheckbox ×1
qmake ×1
qt-designer ×1
qt5.6 ×1
resharper ×1