簡體   English   中英

使用C ++ Win32 GUI在窗口中顯示文本

[英]displaying a text in a window with C++ Win32 GUI

起初對我的英語很抱歉:)

我有一點問題。

我有一個用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);

加載文本與結果顯示在同一時刻。

有人有幫助我的想法嗎?

非常感謝

我相信問題是缺少(win32)消息處理。 我假設您在代碼中的某處有一個消息處理循環(例如TranslateMessageDispatchMessage之類)?

我認為您的問題是,您在彈出窗口創建和長時間加載例程之間不處理消息(在這種情況下,可能是REPAINT消息)。 這就是為什么您的彈出窗口不繪制並且應用程序凍結的原因。 嘗試在CreateWindowFileParser::init之間插入消息處理調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM