我遇到了一个小问题,我在一个函数中写了一些代码,应该在一块板上显示一些图片,我只能在整个函数完成后看到图片。这是:
(在以下代码中,pictures
是一个PictureBoxes
)数组
void static paint_path(ArrNode* node)
{
list<int> head=(NG->game->getboard()).getcolored();
int place=-1;
while(head.size())
{
place=head.back();
head.pop_back();
if(node[place].color == white)
pictures[place]->ImageLocation = "white-.bmp"; /*THIS LINE*/
else if(node[place].color == black)
{
pictures[place]->ImageLocation = "black-.bmp"; /*AND THIS LINE*/
}
}
}
我需要及时执行这2行/ THIS LINE / / 和THIS LINE /,而不仅仅是在功能完成之后。实际上,只有在调用调用此函数的函数返回的函数之后才能显示图片。那是为什么?!
谢谢
修改
我通过Windows.h
中的stdafx.h
和stdafx.h
中的Form1
来推进。
现在,正如 ScottMcP-MVP 建议的那样,我正在尝试使用UpdateWindow().
我读到UpdateWindow()
采用类型为HWND的变量。所以我在我的函数中定义了以下内容:(取自another thread)
HWND hwnd = ::CreateWindowA("STATIC","dummy",WS_VISIBLE,0,0,100,100,NULL,NULL,NULL,NULL);
::SetWindowTextA(hwnd,"Window!");
并调用UpdateWindow(hwnd);
但我一直收到错误:
Error 15 error LNK2028: unresolved token (0A00001D) "extern "C" int __stdcall UpdateWindow(struct HWND__ *)" (?UpdateWindow@@$$J14YGHPAUHWND__@@@Z) referenced in function "private: static void __clrcall GUI::Form1::paint_path(struct b_node *)" (?paint_path@Form1@GUI@@$$FCMXPAUb_node@@@Z) C:\...\GUI.obj
还有什么帮助?
提前致谢
答案 0 :(得分:1)
延迟的原因是当函数执行时,绘图代码没有执行。函数返回后,消息处理恢复,并将处理WM_PAINT。您可以调用UpdateWindow API以在函数期间立即强制绘制。