学习:窗口操作常用记录
窗口最大/小/正常化操作:
消息:WM_SYSCOMMAND
/* D:\Visual_Studio_repos\MFC\8\ */ SC_MAXIMIZE (or SC_ZOOM) Maximize the CWnd object. SC_MINIMIZE (or SC_ICON) Minimize the CWnd object. SC_RESTORE Restore window to normal position and size.
SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE,0); //最大化 SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0); //最小化 SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0); //正常化
窗口关闭
SC_CLOSE Close the CWnd object afx_msg void OnClose( );
两种方法都可以
void CMy8Dlg::OnBnClickedButton4() { SendMessage(WM_SYSCOMMAND,SC_CLOSE, 0); } void CMy8Dlg::OnClose() { // TODO: 在此添加消息处理程序代码和/或调用默认值 if (AfxMessageBox(_T("是否要关闭窗口?"), MB_YESNO,NULL) == IDYES) { CDialogEx::OnClose(); } }
窗口大小位置调动:
SetWindowPos MoveWindow
两种方法:
SetWindowPos(NULL, 10, 10, 0, 0, SWP_NOSIZE); //最后一个参数 大小不变 所以就忽略第三和第四参数 MoveWindow(10, 10, 100, 100);
ps:如果位置要居中直接CenterWindow()
窗口置顶:
void CMy8Dlg::OnBnClickedCheck1() { CButton* cb = (CButton *)GetDlgItem(IDC_CHECK1); if (cb->GetCheck()) { //如果单选框被选中的话 那么就保持置顶操作 ::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); } else { ::SetWindowPos(m_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); } }
加载应用程序图标:
OnInitDialog中编写:
HICON icon = AfxGetApp()->LoadIcon(IDI_ICON1); //通过获得应用的程序theApp对象的地址去调用LoadIcon SetIcon(icon,FALSE);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY