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

客户端界面设计是要设计以下界面
首先添加一个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后则退出消息循环

在查询过程中,

猜你喜欢

转载自blog.csdn.net/yong_ss/article/details/79221563