miniGui中创建多个子窗体及子窗体资源的回收

本文介绍如何在miniGUI环境下创建多个子窗体,并详细讨论了子窗体资源的有效回收策略,确保程序运行效率和内存管理的优化。
摘要由CSDN通过智能技术生成
1.一个工程中只要一个消息循环检测就可
while(GetMessage(&Msg,hMainWnd))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg)
}
MainWindowThreadCleanup(hMainWnd);


在MSG_CLOSE中的代码调用DestroyMainWindow(hWnd);
来销毁CreateMainWindow(&CreateInfo);的窗体,如果要退出整个工程,在
MSG_CLOSE中还要调用PostQuitMessage (hWnd);来是主消息循环退出,最后
调用MainWindowThreadCleanup(hMainWnd);来清理剩余资源


2.对于通过主循环界面弹出新增加的界面
1>如果是通过对话框模板 DLGTEMPLATE和 CTRLDATA来创建的,则对控件的一
些初始化可在过程回调函数的MSG_INITDIALOG中设置,设置完返回0,如果要
退出对应的模板只要在过程回调函数的MSG_CLOSE中调用EndDialog (hDlg, IDCANCEL);
并返回0就可
2>如果新弹出的对话框也是通过CreateMainWindow (&CreateInfo);创建的
则不需要在次调用
while(GetMessage(&Msg,hMainWnd))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg)
}来循环读取消息,因为这个可以和主界面消息循环共用.这时窗体内的控件需要在
本窗体的过程回调函数中的MSG_CREATE中通过CreateWindow(TRL_STATIC, 
                            This_is_a_simple_static_control, 
                            WS_CHILD | SS_NOTIFY | SS_SIMPLE | WS_VISIBLE |    WS_BORDER,
                            IDC_STATIC1, 
                            10, 10, 180, 20, hWnd, 0);来创建,结束用break;
控件始化则可在MSG_INITDIALOG中设置。需要关闭对话框时,在MSG_CLOSE中调用
DestroyMainWindow(hWnd) 和 MainWindowCleanup(hWnd);来关闭窗体,结束返回0, 同时在 MSG_DESTROY中调用DestroyAllControls(hWnd);来销毁控件资源,结束返回0;


实例:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>


#define    IDC_DLGBUTTON          100
#define    IDC_CREATEBUTTON     101


#define    IDC_PROMPTINFO         200
#define    IDC_PROGRESS               201


#define    IDC_BUTTON                   300

//通过对话框模板 DLGTEMPLATE和 CTRLDATA来创建
DLGTEMPLATE DlgInitProgress=
{
    WS_BORDER | WS_CAPTION,<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值