VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 303|回复: 2

对话框最大化出现黑边

[复制链接]
18_avatar_middle
最佳答案
0 
在线会员 发表于 2022-8-19 14:26:14 | 显示全部楼层 |阅读模式
4驿站币
在尝试对话框最大化时发现了如下问题:
1.最大化后对话框里会出现黑边,且无法选中标题栏

最大化后出现黑边

最大化后出现黑边

2.最大化恢复后,内部控件会向下移动,第一次点击标题栏时无法选中,第二次点击时可以选中并拖拽

恢复大小后控件移动

恢复大小后控件移动

请各位大佬帮忙指正,我把我的代码贴在下面
  1. #include "DialogProc.h"

  2. INT_PTR WINAPI DialogHandle(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  3.         switch (uMsg) {
  4.         case WM_SIZE: {
  5.                 DWORD dwSizeType = wParam;
  6.                 int nWidth = LOWORD(lParam);
  7.                 int nHeight = HIWORD(lParam);
  8.                 TCHAR szText[] = _T("size change\r\n");
  9.                 SendDlgItemMessage(hWndDlg, IDC_SHOWMSG, EM_SETSEL, -2, -1);
  10.                 SendDlgItemMessage(hWndDlg, IDC_SHOWMSG, EM_REPLACESEL, true, (LPARAM)szText);
  11.                 UpdateWindow(hWndDlg);
  12.                 break;
  13.         }
  14.         case WM_COMMAND: {
  15.                 UINT nCtrlId = LOWORD(wParam); // wParam存储控件id
  16.                 UINT nCode = HIWORD(lParam); // lParam存储控件响应的事件
  17.                 switch (nCtrlId) {
  18.                 case IDC_BTN1: {
  19.                         TCHAR szText[] = _T("button 1 click\r\n");
  20.                         SendDlgItemMessage(hWndDlg, IDC_SHOWMSG, EM_SETSEL, -2, -1);
  21.                         SendDlgItemMessage(hWndDlg, IDC_SHOWMSG, EM_REPLACESEL, true, (LPARAM)szText);
  22.                         break;
  23.                 }
  24.                 case IDC_BTN2: {
  25.                         TCHAR szText[] = _T("button 2 click\r\n");
  26.                         SendDlgItemMessage(hWndDlg, IDC_SHOWMSG, EM_SETSEL, -2, -1);
  27.                         SendDlgItemMessage(hWndDlg, IDC_SHOWMSG, EM_REPLACESEL, true, (LPARAM)szText);
  28.                         break;
  29.                 }
  30.                 default: {
  31.                         DefWindowProc(hWndDlg, uMsg, wParam, lParam);
  32.                         break;
  33.                 }
  34.                 }
  35.                 break;
  36.         }
  37.         default: {
  38.                 DefWindowProc(hWndDlg, uMsg, wParam, lParam);
  39.                 break;
  40.         }
  41.         }
  42.         return FALSE;
  43. }

  44. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
  45.         DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAINDIALOG), NULL, DialogHandle);
  46.         return TRUE;
  47. }
复制代码





上一篇:jna调用C++
下一篇:求助 c++ 获取网页正在播放视频的 m3u8链接
18_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-9-20 20:43:36 | 显示全部楼层
删掉Dialog消息处理中的default立马正常,用DefDlgProc会循环调用爆栈,推测是因为Dialog除了自己写的消息处理函数还会调用默认处理函数
18_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-9-20 20:44:37 | 显示全部楼层
本帖最后由 XOR 于 2022-9-20 20:48 编辑

已解决,方案参考置顶
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-10-5 14:48

Powered by CcTry.CoM

© 2009-2021 cctry.com

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