bug笔记【图书管理系统】开发之客户端界面设计

本文探讨了客户端界面设计中遇到的问题,即登录成功后界面出现但迅速消失的现象。通过调试发现,问题根源在于窗口创建完成后,程序错误地从对话框过程的WM_DESTROY消息中退出。文章详细解释了窗口退出流程并提出了可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端界面设计是要设计以下界面
首先添加一个dialog资源:ID_ILG_CLIENT
然后添加了一个MENU资源ID_CLIENT_MENU
在dialog属性中的menu添加刚刚新增的这个menu
下面的背景图以及五个工具栏均在代码中完成

在运行时,登陆成功后这个界面一闪而过而且并没有下面的工具栏以及主界面的背景
查找原因发现问题出在这里SetWindowPos(hDlg, HWND_TOP, 100, 100, 0, 0, SWP_NOSIZE|SWP_SHOWWINDOW);
查询了下SWP_SHOWWINDOW,使用SWP_SHOWWINDOW后窗口不能移动改变大小而且会导致不能重绘背景,所以主界面的背景图片不能显示出来

那为什么这个窗口一直一闪而过呢?
经过断点调试后发现在完成窗口的创建后,程序从LoginDlgProc中的WM_DESTROY中退出了
个人认为应该是由于在LoginDlgProc中创建的ClientDlgProc,由于LoginDlgProc在创建ClientDlgProc窗口前已经自己将自己的窗口EndDialog了,因此从WM_DESTROY退出。

这里复习一下系统退出的程序

            (1)用户点击X退出按钮,发送了WM_CLOSE消息----->响应OnClose()
            (2)在WM_CLOSE消息的处理函数中,调用DestroyWindow()----->销毁与指定CWnd窗口对象关联的窗口,但未销毁CWnd对象
            (3)在DestroyWindow()中发送了WM_DESTROY消息----->窗口销毁后响应OnDestroy()
            (4)在WM_DESTROY消息中调用PostQuitMessage(),往消息队列中post了一个WM_QUIT消息,并且由于PostQuitMessage是异步消息,它不等该消息处理就立即返回,等到GetMessage函数捕捉到WM_QUIT后则退出消息循环

在查询过程中,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值