Winforms 操作仅在从函数返回后执行
我遇到了一个小问题,我在一个函数中编写了一些代码,应该在一块板上显示一些图片,我只能在整个函数完成后才能看到这些图片。这是: (在下面的代码中,Winforms 操作仅在从函数返回后执行,winforms,visual-studio-2010,visual-c++,c++-cli,hwnd,Winforms,Visual Studio 2010,Visual C++,C++ Cli,Hwnd,我遇到了一个小问题,我在一个函数中编写了一些代码,应该在一块板上显示一些图片,我只能在整个函数完成后才能看到这些图片。这是: (在下面的代码中,pictures是PictureBoxes的数组) 并调用UpdateWindow(hwnd) 但我不断地得到一个错误: 错误15错误LNK2028:未解析的令牌(0A00001D)“外部”C“内部stdcall UpdateWindow(struct HWND uu*)”(?UpdateWindow@$$J14YGHPAUHWND u@@@Z)在函数“
pictures
是PictureBoxes
的数组)
并调用UpdateWindow(hwnd)代码>
但我不断地得到一个错误:
错误15错误LNK2028:未解析的令牌(0A00001D)“外部”C“内部stdcall UpdateWindow(struct HWND uu*)”(?UpdateWindow@$$J14YGHPAUHWND u@@@Z)在函数“private:静态无效调用GUI::Form1::paint_路径(struct b_node*)”(?paint)中引用_path@Form1@GUI@$$FCMXPAUb\u节点@@@Z)C:\…\GUI.obj
还有什么需要帮助的吗
提前感谢延迟的原因是函数正在执行时,绘制代码没有执行。函数返回消息后,处理恢复,并将处理WM_PAINT。您可以调用UpdateWindow API来强制在函数执行期间立即绘制。好的,我读了有关UpdateWindow的内容,发现应该包含文件Winuser.h
或Windows.h
。但是VisualStudio(2010)不允许我包括它们。我会犯错误。有什么想法吗?你在用什么语言?您正在使用什么GUI库?语言错误C++,GUI C++,添加<代码> Windows .h < /> >错误:<代码>错误C2143:语法错误:“丢失”;在“constant”C:\…\include\windef.h
之前,错误C2059:语法错误:“constant”C:…\include\windef.h
及其他一些错误。更新域解决方案适用于C/C++WinAPI应用程序。您似乎正在将C++/CLI与Winforms GUI库一起使用。尝试在问题中添加Winforms标记,希望得到更相关的答案。听从Scott的建议会给自己带来更多麻烦。只需使用pictures[place]->Update()代码>精灵!!!把它作为答案,我会选择的。非常感谢。
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*/
}
}
}
HWND hwnd = ::CreateWindowA("STATIC","dummy",WS_VISIBLE,0,0,100,100,NULL,NULL,NULL,NULL);
::SetWindowTextA(hwnd,"Window!");