【发布时间】:2014-01-15 09:55:13
【问题描述】:
起初对不起我的英语:)
我有一个小问题。
我有一个用 C++ 编写的程序,它解析 JavaScript 文件以找到一些关键字。
我有一个主窗口和一个主菜单,当你点击菜单->打开文件夹时,你需要选择你的文件夹。 在此之后,我恢复此文件夹中的所有文件以打开它,阅读它以找到我的关键字。 当一切就绪时,我在子窗口中显示结果。 我想添加一个弹出窗口,显示“加载中,请稍候”之类的文本,但我有一个小问题。
这是我的代码:
// creating a "popup" display a text while loading
MainWindow::m_hwndResLoading = CreateWindow( "edit",
"",
WS_VISIBLE|ES_MULTILINE|ES_READONLY|WS_OVERLAPPED,
0,
0,
400,
200,
hwnd,
NULL,
NULL,
NULL);
// creating my str, and asking my m_hwndLoading to display my text
string loading = "Chargement";
SetWindowText(MainWindow::m_hwndResLoading,TEXT(loading.c_str()));
MainWindow::projectPath = path;
// this function find every files in a specified directory which is source code file
getAllFile(path);
// creating my childwindow which will contain the result of the files parsing
MainWindow::m_hwndRes = CreateWindow( "edit",
"",
WS_VISIBLE|WS_CHILD|WS_BORDER|
WS_VSCROLL|WS_HSCROLL|ES_MULTILINE|
ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_READONLY,
0,
0,
1000,
600,
hwnd,
NULL,
NULL,
NULL);
// create and instanciate my object
FileParser *fp;
fp = new FileParser();
string res = fp->init(files);
// close my loading "popup"
CloseWindow(MainWindow::m_hwndResLoading);
// display the result in my child window
SetWindowText(MainWindow::m_hwndRes,TEXT(res.c_str()));
当我运行应用程序时,当我打开新文件夹时,我的“弹出窗口”正在显示,但没有加载文本。 解析完成后,一切正常,弹出窗口关闭,子窗口填充结果。
我看到了,如果我评论这一行:
CloseWindow(MainWindow::m_hwndResLoading);
加载文本与结果在同一时刻显示。
有没有人有什么小想法可以帮帮我?
非常感谢
【问题讨论】:
-
如果没有消息循环,就不会进行绘画。您可以使用
UpdateWindow强制立即绘制窗口(例如,您可以在调用SetWindowText之后使用它)。
标签: c++ winapi user-interface text window