我正在为我的编程课程创建一个WinApi应用程序。该程序应该为每个“块”使用单独的窗口显示LED时钟。除了一件事之外,我已经想出了大部分内容:在创建二维窗口数组时,第一个和最后一个窗口永远不会显示出来。这是InitInstance函数的代码片段:
for (int x=0;x<8;x++)
for (int y=0;y<7;y++) {
digitWnd[x][y] = CreateWindowEx((WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_NOACTIVATE | WS_EX_STATICEDGE),
szWindowClass, szTitle, (WS_POPUP| WS_BORDER), NULL, NULL, NULL, NULL, dummyWnd, NULL, hInstance, NULL);
ShowWindow(digitWnd[x][y], nCmdShow);
UpdateWindow(digitWnd[x][y]);
}
每次与窗口交互时都会使用相同的循环边界(设置位置和启用/禁用)。除了digitWnd[0][0]
和digitWnd[7][6]
之外,所有的窗口看起来都运行正常......有关于发生了什么的任何想法?
答案 0 :(得分:1)
打开Spy ++并检查丢失的窗口是否确实丢失或者是否与其他窗口重叠。您可能会在位置计算代码中出现一些小错误,将其置于另一个窗口或屏幕外部。
答案 1 :(得分:0)
要验证您的创建机制,我会检查:
数组初始化HWND digitWnd [8] [7]
如果父窗口dummyWnd
有效
CreateWindowEx() != NULL
我想到的另一点是,您创建了尺寸为0的窗口 - 没有宽度或高度。因此,在CreateWindowEx(...)
中设置大小可能是个好主意答案 2 :(得分:0)
这是您第一次拨打ShowWindow()
吗?如果是这样,根据MSDN,“nCmdShow:[in]指定窗口的显示方式。当应用程序第一次调用ShowWindow时,将忽略此参数”。这可能意味着您只需拨打ShowWindow()
两次即可修复您的计划。试一试,看看它是否有效。除此之外,您可能需要提供更多代码供我们查看。