硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1027|回复: 15
收起左侧

[emWin] 在用WM_DeleteWindow()删除窗口时报错

  [复制链接]

8

主题

25

回帖

49

积分

初级会员

积分
49
发表于 2024-10-25 14:59:05 | 显示全部楼层 |阅读模式
本帖最后由 dirty_data 于 2024-10-25 15:08 编辑


窗口中仅加入了TEXT,MULTIEDIT控件,删除窗口时就会弹出block to be deleted is already locked in _Free()。是因为删除窗口前要删除控件?大佬们知道原因吗?
1.png
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2024-10-25 15:01:31 | 显示全部楼层
C:\Users\Administrator\Desktop\1.png
回复

使用道具 举报

3

主题

425

回帖

434

积分

高级会员

积分
434
发表于 2024-10-25 15:52:26 | 显示全部楼层
可能你锁定了控件的句柄没有释放
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2024-10-25 15:59:30 | 显示全部楼层
glory 发表于 2024-10-25 15:52
可能你锁定了控件的句柄没有释放

怎样才叫锁定呢,又该怎样释放
回复

使用道具 举报

11

主题

130

回帖

168

积分

初级会员

积分
168
发表于 2024-10-25 16:36:11 | 显示全部楼层
如果你的逻辑没有问题的话,使用GUI_EndDialog去删除页面,两个API区别见讨论:https://www.armbbs.cn/forum.php? ... highlight=EndDialog
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-10-26 09:57:42 | 显示全部楼层
dirty_data 发表于 2024-10-25 15:59
怎样才叫锁定呢,又该怎样释放

方便的话,分享代码看下
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2024-10-30 15:40:08 | 显示全部楼层
eric2013 发表于 2024-10-26 09:57
方便的话,分享代码看下

case ID_MULTIEDIT_4: // Notifications sent by 'Multiedit'
     switch (NCode) {
     case WM_NOTIFICATION_CLICKED:
         break;
     case WM_NOTIFICATION_RELEASED:
         WM_DeleteWindow(pMsg->hWin);//这里用这个函数就会错误,用GUI_EndDialog()就没问题
         break;
     }
     break;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-10-31 08:40:48 | 显示全部楼层
dirty_data 发表于 2024-10-30 15:40
case ID_MULTIEDIT_4: // Notifications sent by 'Multiedit'
     switch (NCode) {
     case WM_NO ...

完整点的emWin测试代码。
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2024-10-31 08:50:18 | 显示全部楼层
eric2013 发表于 2024-10-31 08:40
完整点的emWin测试代码。

/*********************************************************************
*                                                                    *
*                SEGGER Microcontroller GmbH & Co. KG                *
*        Solutions for real time microcontroller applications        *
*                                                                    *
**********************************************************************
*                                                                    *
* C-file generated by:                                               *
*                                                                    *
*        GUI_Builder for emWin version 5.44                          *
*        Compiled Nov 10 2017, 08:53:57                              *
*        (c) 2017 Segger Microcontroller GmbH & Co. KG               *
*                                                                    *
**********************************************************************
*                                                                    *
*        Internet: www.segger.com  Support: support@segger.com       *
*                                                                    *
**********************************************************************
*/

// USER START (Optionally insert additional includes)
// USER END

#include "DIALOG.h"
#include <stdio.h>
/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define ID_WINDOW_0              (GUI_ID_USER + 0x00)


#define ID_MULTIEDIT_0           (GUI_ID_USER + 0x0A)
#define ID_MULTIEDIT_1           (GUI_ID_USER + 0x0F)
#define ID_MULTIEDIT_2           (GUI_ID_USER + 0x10)
#define ID_MULTIEDIT_3           (GUI_ID_USER + 0x11)
#define ID_MULTIEDIT_4           (GUI_ID_USER + 0x12)
#define ID_MULTIEDIT_5           (GUI_ID_USER + 0x13)
#define ID_MULTIEDIT_6           (GUI_ID_USER + 0x14)
#define ID_MULTIEDIT_7           (GUI_ID_USER + 0x15)
#define ID_TEXT_0                (GUI_ID_USER + 0x20)


// USER START (Optionally insert additional defines)
#define GUI_BkColor                 0x00264D
#define GUI_TxBkColor_Blue          0X0080C0
#define GUI_TxBkColor_Green         0X64964B
#define RULER_NUM                   16

#define LowBlockInput               1
#define MiddleBlockInput            2
#define HighBlockInput              3
// USER END

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally insert additional static data)
GUI_MEMDEV_Handle hMem;
extern WM_HWIN MainUI;
extern WM_HWIN UI_VERSION;
U8 flag_input = 0;
extern U8 value_select;
extern U8 value_dropdown;
extern const char* Ruler[];
extern const char* dropdown[];
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialog_Window_Transparen[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0,  35, 70, 700, 220, 0, 0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_0, 500, 100, 170, 75, 0, 0x0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 1024, 600, 0, 0x0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_0, 15, 45, 740, 430, 0, 0x0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_1, 500, 125, 170, 75, 0, 0x0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_2, 770, 45, 240, 310, 0, 0x0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_3, 770, 375, 240, 100, 0, 0x0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_4, 770, 490, 240, 100, 0, 0x0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_5, 516, 490, 240, 100, 0, 0x0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_6, 267, 490, 240, 100, 0, 0x0, 0 },
  { MULTIEDIT_CreateIndirect, "Multiedit", ID_MULTIEDIT_7, 15, 490, 240, 100, 0, 0x0, 0 },
  { TEXT_CreateIndirect, "Text", ID_TEXT_0, 15, 12, 259, 29, 0, 0x64, 0 },


  
  // USER START (Optionally insert additional widgets)
  // USER END
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally insert additional static code)
// USER END

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog_Window_Transparent(WM_MESSAGE* pMsg) {
    WM_HWIN hItem;
    int     NCode;
    int     Id;
    // USER START (Optionally insert additional variables)
   
    // USER END

    switch (pMsg->MsgId) {
    case WM_INIT_DIALOG:
        hItem = pMsg->hWin;     
        WINDOW_SetBkColor(hItem,GUI_WHITE);
        //WINDOW_SetBkColor(hItem, GUI_RED);
     
        //
        // Initialization of 'Multiedit'
        //
        hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, GUI_GREEN);
        MULTIEDIT_SetFont(hItem, GUI_FONT_24_ASCII);
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_WHITE);
        MULTIEDIT_ShowCursor(hItem,0);
        if (value_select > RULER_NUM)
        {
            value_select = 2;
        }
        MULTIEDIT_SetText(hItem, Ruler[value_select]);

   
        break;
    case WM_NOTIFY_PARENT:
        Id = WM_GetId(pMsg->hWinSrc);
        NCode = pMsg->Data.v;
        switch (Id) {
        case ID_MULTIEDIT_0: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)
                WM_HideWindow(MainUI);
                CreateSelect();
                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
            // USER END
        }
        break;
        // USER START (Optionally insert additional message handling)
    case WM_PAINT:
        GUI_SetColor(GUI_BLACK);
        GUI_SetPenSize(2);
        GUI_DrawRect(0, 0, 699, 219);    //数值显示框
        
        GUI_GotoXY(80,80);
        GUI_SetFont(GUI_FONT_D60X80);
        GUI_SetColor(GUI_BLACK);
        GUI_DispDecShift(5000,5,2);
        break;
    default:
        WM_DefaultProc(pMsg);
        break;
    }
}

static void _cbDialog(WM_MESSAGE* pMsg) {
    WM_HWIN hItem;
    int     NCode;
    int     Id;
    // USER START (Optionally insert additional variables)
    static  char TXT_Statistics[99];
    // USER END

    switch (pMsg->MsgId) {
    case WM_INIT_DIALOG:
        MainUI = pMsg->hWin;
        hItem = pMsg->hWin;
        WINDOW_SetBkColor(hItem, GUI_BkColor);     

        //
        // Initialization of 'Multiedit'
        //
        hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0);
        MULTIEDIT_SetFont(hItem, GUI_FONT_24_ASCII);
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_BLACK);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, GUI_WHITE);
        MULTIEDIT_ShowCursor(hItem, 0);
        MULTIEDIT_SetText(hItem, "\n\n\n\n\n\n\n\n\n\n\n\r\n\
   Pressure head parameters:\n\
     \
                              Force:\n\
                             Hold Time:            \n\
                  Shape correction: ");
        

        /*hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_1);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, GUI_BLACK);
        MULTIEDIT_SetFont(hItem, GUI_FONT_24_ASCII);
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_TxBkColor_Green);
        if (value_select > RULER_NUM)
        {
            value_select = 2;
        }
        MULTIEDIT_SetText(hItem, Ruler[value_select]);*/

        hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_2);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, 0X00E040);
        MULTIEDIT_SetFont(hItem, GUI_FONT_24B_ASCII);
        MULTIEDIT_ShowCursor(hItem, 0);
        sprintf(TXT_Statistics, "\n\n  356.56um:\n\n\n  coil:14338" );
        MULTIEDIT_SetText(hItem, TXT_Statistics);
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_BLACK);
      
        hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_3);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, GUI_WHITE);
        MULTIEDIT_SetFont(hItem, GUI_FONT_32_ASCII);
        MULTIEDIT_ShowCursor(hItem, 0);
        MULTIEDIT_SetText(hItem, "\n        Confirm");
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_BLACK);

        hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_4);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, GUI_WHITE);
        MULTIEDIT_SetFont(hItem, GUI_FONT_32_ASCII);
        MULTIEDIT_ShowCursor(hItem, 0);
        MULTIEDIT_SetText(hItem, "\n          Exit");
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_BLACK);

        hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_5);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, GUI_WHITE);
        MULTIEDIT_SetFont(hItem, GUI_FONT_32_ASCII);
        MULTIEDIT_ShowCursor(hItem, 0);
        MULTIEDIT_SetText(hItem, "\n         Low block");
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_BLACK);

        hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_6);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, GUI_WHITE);
        MULTIEDIT_SetFont(hItem, GUI_FONT_32_ASCII);
        MULTIEDIT_ShowCursor(hItem, 0);
        MULTIEDIT_SetText(hItem, "\n         Middle block");
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_BLACK);

        hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_7);
        MULTIEDIT_SetTextColor(hItem, MULTIEDIT_CI_EDIT, GUI_WHITE);
        MULTIEDIT_SetFont(hItem, GUI_FONT_32_ASCII);
        MULTIEDIT_ShowCursor(hItem, 0);
        MULTIEDIT_SetText(hItem, "\n  High block");
        MULTIEDIT_SetBkColor(hItem, MULTIEDIT_CI_EDIT, GUI_BLACK);
        // Initialization of 'Text'
        //
        hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
        TEXT_SetTextColor(hItem, GUI_WHITE);
        TEXT_SetFont(hItem, GUI_FONT_20_ASCII);
        TEXT_SetText(hItem, "2024.10.21   15:00");

   
        // USER START (Optionally insert additional code for further widget initialization)


        // USER END
        break;
    case WM_NOTIFY_PARENT:
        Id = WM_GetId(pMsg->hWinSrc);
        NCode = pMsg->Data.v;
        switch (Id) {
        case ID_MULTIEDIT_0: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)
               
                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
        case ID_MULTIEDIT_1: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)

                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
            // USER START (Optionally insert additional code for further Ids)
        case ID_MULTIEDIT_2: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)
               
                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
        case ID_MULTIEDIT_3: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)
               
                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
        case ID_MULTIEDIT_4: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)
                WM_DeleteWindow(pMsg->hWin);        //此处有问题
                //CreateWindow();
                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
        case ID_MULTIEDIT_5: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)
                flag_input = LowBlockInput;
                CreateCalibrationInput();
                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
        case ID_MULTIEDIT_6: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)
                flag_input = MiddleBlockInput;
                CreateCalibrationInput();
                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
        case ID_MULTIEDIT_7: // Notifications sent by 'Multiedit'
            switch (NCode) {
            case WM_NOTIFICATION_CLICKED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
            case WM_NOTIFICATION_RELEASED:
                // USER START (Optionally insert code for reacting on notification message)
                flag_input = HighBlockInput;
                CreateCalibrationInput();
                // USER END
                break;
            case WM_NOTIFICATION_VALUE_CHANGED:
                // USER START (Optionally insert code for reacting on notification message)
                // USER END
                break;
                // USER START (Optionally insert additional code for further notification handling)
                // USER END
            }
            break;
            // USER END
        }
        break;
        // USER START (Optionally insert additional message handling)
    case WM_PAINT:
        GUI_SetColor(0X22B14C);
        GUI_SetPenSize(3);
        GUI_DrawRect(15, 45, 755 , 475);     //显示框矩形

        break;

    case WM_TIMER:

        WM_RestartTimer(pMsg->Data.v, 100);

        break;
        // USER END
    default:
        WM_DefaultProc(pMsg);
        break;
    }
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateWindow
*/
WM_HWIN CreateTransparentWindow_1(WM_HWIN hWin_father);
WM_HWIN CreateTransparentWindow_1(WM_HWIN hWin_father) {
    WM_HWIN hWin;

    hWin = GUI_CreateDialogBox(_aDialog_Window_Transparen, GUI_COUNTOF(_aDialog_Window_Transparen), _cbDialog_Window_Transparent, hWin_father, 0, 0);
    return hWin;
}

WM_HWIN CreateCalibration(void);
WM_HWIN CreateCalibration(void) {
    WM_HWIN hWin;

    hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
   
    CreateTransparentWindow_1(hWin);
    return hWin;
}

// USER START (Optionally insert additional public code)
// USER END

/*************************** End of file ****************************/
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-10-31 15:57:37 | 显示全部楼层
dirty_data 发表于 2024-10-31 08:50
/*********************************************************************
*                          ...

你看下你的界面是不是存在和删除了
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);

在CreateTransparentWindow_1里面还有操作其句柄的问题。建议先删除CreateTransparentWindow_1,再删除CreateCalibration
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2024-11-1 09:02:29 | 显示全部楼层
eric2013 发表于 2024-10-31 15:57
你看下你的界面是不是存在和删除了
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialog ...

CreateCalibration是CreateTransparentWindow_1的父窗口,后者可以被直接删除,我尝试了先删CreateTransparentWindow_1,但是删除CreateCalibration时还是会弹警告。警告弹完后CreateCalibration就被成功删除了,并不会报错终止进程。但是应用在开发板上就会没反应。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-11-2 10:27:10 | 显示全部楼层
dirty_data 发表于 2024-11-1 09:02
CreateCalibration是CreateTransparentWindow_1的父窗口,后者可以被直接删除,我尝试了先删CreateTransp ...

弹这个错误主要就是嵌套创建或者删除了还有操作对应窗口句柄的情况。

你开发板上测试的话,反复操作几次,看看全局动态内存有没有一直变小的情况,没有且运行正常的话,那没有问题
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2024-11-4 15:03:48 | 显示全部楼层
eric2013 发表于 2024-11-2 10:27
弹这个错误主要就是嵌套创建或者删除了还有操作对应窗口句柄的情况。

你开发板上测试的话,反复操作几 ...

好的硬汉哥,我多调试调试
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
 楼主| 发表于 2024-11-15 14:13:14 | 显示全部楼层
eric2013 发表于 2024-11-2 10:27
弹这个错误主要就是嵌套创建或者删除了还有操作对应窗口句柄的情况。

你开发板上测试的话,反复操作几 ...

我仔细检查过了,句柄是没有问题的。但是发现个奇怪的事,在button事件里使用WM_DeleteWindow()是没有问题的,但用multiedit控件就会出问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-11-16 11:12:59 | 显示全部楼层
dirty_data 发表于 2024-11-15 14:13
我仔细检查过了,句柄是没有问题的。但是发现个奇怪的事,在button事件里使用WM_DeleteWindow()是没有问 ...

这个得继续排查下了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-9 21:13 , Processed in 0.517170 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表