LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 901|回复: 4

GUI 下的困惑

[复制链接]
发表于 2007-8-25 21:43:09 | 显示全部楼层 |阅读模式
用minigui写了个控件窗口
没有想到会有这样的情况
图片1  刚打开时候
图片2  拖动的时候留下历史位置
图片3  点击“关闭”“确定”“取消”的情况

代码都是按照标准的写的
但为什么出现这样的情况?大家碰到过类似的问题吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2007-8-26 11:26:04 | 显示全部楼层
我不知道,但建议你改一下标题
回复 支持 反对

使用道具 举报

发表于 2007-8-26 12:00:39 | 显示全部楼层
这类问题,不贴代码似乎没人能帮你。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-26 21:55:42 | 显示全部楼层

  1. 完整的代码有近 2000行

  2. 我就把这个这个控件部分的代码发上来

  3. 大家帮我分析一下吧

  4. 这个控件在另外一个窗口中,以InitDialogBox5(hwnd)来触发

  5. /*------------------------------------------------------------
  6.              control 5
  7. ------------------------------------------------------------*/

  8. static DLGTEMPLATE  MyDlg5 =
  9. {   WS_VISIBLE | WS_BORDER | WS_CAPTION,
  10.     WS_EX_NONE,
  11.     250, 200, 300 ,200,
  12.     "保存文件",
  13.     0, 0,
  14.     4,
  15.     NULL,
  16.     0
  17. };

  18. static CTRLDATA CtrlInitData5 [] =
  19. {   
  20.   
  21. {  "static",
  22.     WS_VISIBLE | SS_LEFT,
  23.     20, 50, 100 ,20,
  24.     ID_DISP5,
  25.     "输入文件名:",
  26.     0,
  27.     WS_EX_NONE
  28.   },

  29. {  "edit",
  30.     WS_VISIBLE | WS_BORDER | SS_SIMPLE| ES_LOWERCASE ,
  31.     110, 50, 150 ,20,
  32.     ID_EDIT5,
  33.     "",
  34.     0,
  35.     WS_EX_NONE
  36.   },

  37.   {  "button",
  38.     WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON ,
  39.     80, 120, 50,25,
  40.     ID_OK5,
  41.     "确定",
  42.     0,
  43.     WS_EX_NONE,
  44.   },


  45.   {  "button",
  46.     WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON ,
  47.     170, 120, 50 ,25,
  48.     ID_CANCEL5,
  49.     "取消",
  50.     0,
  51.     WS_EX_NONE,
  52.   }

  53. };

  54. static int MyDlgProc5(HWND hDlg5, int message, WPARAM wParam, LPARAM lParam)
  55.   {   
  56. HDC hdc;
  57. static  char  savename1[20];
  58. static  char  savename2[20] = "/tmp/";
  59. static  char  savename3[5] = ".bmp";
  60. static  int   i,j,m,n;
  61. static  RECT  rc = {0,88,612,512};


  62.    
  63.     switch (message)
  64.        {
  65.         case MSG_INITDIALOG:
  66.    
  67.                   return 1;


  68.         case MSG_COMMAND:
  69.               switch (LOWORD(wParam))
  70.                {
  71.                    case ID_OK5:
  72.                         GetWindowText(GetDlgItem(hDlg5, ID_EDIT5), savename1, 20);
  73.                         
  74.                         
  75.                         for(i = 5, j = 0; j<10; i++, j++)  
  76.                       { savename2[i] = savename1[j] ;}
  77.                         printf("savename2's length:%d\n",strlen(savename2));
  78.                        
  79.                         m = strlen(savename2);
  80.                      
  81.                         for(i = m,j=0 ;j<4; i++, j++)
  82.                         { savename2[i] = savename3[j];}
  83.                         
  84.                         
  85.                         printf("savename:%s\n",savename2);  
  86.                         if(fork() == 0)
  87.                         {  if(execl"/bin/cp", "cp","/home/example/myexample/bmpdisp512/00.jpg",savename2, NULL) < 0 )   
  88.                                perror("execl error!");
  89.                                printf("this is a test\n");
  90.                                exit(0);
  91.                         }
  92.                                                
  93.                         DestroyAllControls(hDlg5);
  94.                         EndDialog(hDlg5, wParam);
  95.                   //     InvalidateRect (hWnd1, &rc, FALSE);
  96.                         
  97.                            break;
  98.   
  99.                   case  ID_CANCEL5:

  100.                         DestroyAllControls(hDlg5);
  101.                         EndDialog(hDlg5, wParam);
  102.                         break;                       
  103.                                           
  104.                   default:
  105.                          break;
  106.                }
  107.               break;

  108.           case  MSG_CLOSE:

  109.                          DestroyAllControls(hDlg5);
  110.                          EndDialog(hDlg5, wParam);
  111.                          PostQuitMessage (hDlg5);
  112.                          break;  

  113.         default:
  114.             return DefaultDialogProc(hDlg5, message, wParam, lParam);
  115.     }
  116.     return 0;
  117. }

  118. static void InitDialogBox5(HWND hDlg2)
  119. {   MyDlg5.controls = CtrlInitData5;
  120.     DialogBoxIndirectParam(&MyDlg5, hDlg2, MyDlgProc5, 0L);
  121. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-28 09:24:28 | 显示全部楼层
朋友们提点建议啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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