⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filedlg.c

📁 这是一个介绍 linux 编程知识的文章。
💻 C
📖 第 1 页 / 共 2 页
字号:
        case IDC_NCFILE2:
            if (code != 0) break;

            GetAbsolutePathName (DIR_DATA_NC, fi->dir);
            if (access (fi->dir, F_OK ) == -1) {
                MessageBox( hDlg, "对不起,未找到数控文件所在目录",
                        "提示信息", MB_OK | MB_ICONSTOP);
                break;
            }
            ChangeDirList (hDlg, IDC_DIRLST2, IDC_FILELST2, 
                                    IDC_FILETODEL, fi->dir);
            break;
            
        case IDOK:
        {
            char msg [ PATH_MAX + 16];

            if (code != 0) break;

            // get the file name
            GetWindowText (GetDlgItem(hDlg, IDC_FILETODEL), 
                                    fi->filename, NAME_MAX);

            // make sure the file being there
            if (fi->filename [0] == '\0' ){
                MessageBox( hDlg, 
                        "请注意文件名:\n\n输入的文件名中不要"
                        "夹杂空格,\n尤其头尾不要留有空格,\n文件名中不能使"
                        "用 / 字符.\n\n请输入正确的文件名.", 
                        "删除文件出错", 
                        MB_OK | MB_ICONINFORMATION);
                break;
            } 
            strcpy (fi->fullname, fi->dir);
            strcat (fi->fullname, "/" );
            strcat(fi->fullname, fi->filename);
            if (access (fi->fullname, F_OK) == -1) {
                 sprintf(msg, "文件 %s 不存在!", fi->filename);
                 MessageBox( hDlg, msg, "删除文件出错", MB_OK | MB_ICONSTOP);
                 break;
            }
                
            // Delete the file now
            sprintf(msg, "您真的要删除文件:\n\n   %s\n\n吗?", fi->filename);
            if (!IsDlgButtonChecked (hDlg, IDC_CHKDEL)) {
                if (MessageBox (hDlg, msg,"确认信息", 
                                    MB_OKCANCEL | MB_ICONQUESTION)  == IDOK)
                    DelFile(fi->fullname);
                else 
                    break;
            } else
                DelFile(fi->fullname);
                EndDialog (hDlg, IDOK);
                break;
	        }
            
        case IDCANCEL:
            if (code != 0) break;

            EndDialog (hDlg, wParam);
            break;
        }
        break;
    }
    }
    return DefaultDialogProc (hDlg, message, wParam, lParam);
}

int FileDeleteDialogBox (HWND hWnd,struct FileDeleteInfo *fi)
{
    if (access (fi->dir, F_OK) == -1) 
        return VACS_ERROR_PATHNOTEXIST;
    
    DlgFileDeleteInfo.controls = CtrlFileDeleteInfo;
    if (DialogBoxIndirectParam (&DlgFileDeleteInfo, hWnd,  
          DialogFileDeleteProc, (LPARAM)fi) == IDOK)
        return VACS_OK;
    else
        return VACS_ERROR_GUI;
}

////////////////////////////////////
DLGTEMPLATE DlgFileCopyInfo = 
{
    WS_BORDER | WS_CAPTION, WS_EX_NONE,
    180, 80, 430, 315, "复制文件", 0, 0, 14, NULL
};

CTRLDATA CtrlFileCopyInfo [] = 
{
    { "static", WS_VISIBLE | SS_SIMPLE,
        10, 10, 40, 40, IDC_STATIC, "LOGO", 0 },
    { "static", WS_VISIBLE | SS_LEFT,
        50, 10, 90, 24, IDC_STATIC, "目录", 0 },
    { "static", WS_VISIBLE | SS_LEFT,
        142, 10, 260, 24, IDC_STATIC, "文件", 0 },
    { "listbox", WS_VISIBLE | WS_TABSTOP | LBS_NOTIFY | WS_VSCROLL | WS_BORDER,
        50, 35, 90, 130, IDC_DIRLST3, NULL, 0 },
    { "listbox", WS_VISIBLE | WS_TABSTOP | LBS_NOTIFY | WS_VSCROLL | WS_BORDER,
        142, 35, 138, 130, IDC_FILELST3, NULL, 0 },
    { "static", WS_VISIBLE | SS_LEFT,
        50, 180, 130, 24, IDC_STATIC, "源  文  件:", 0 },
    { "edit", WS_VISIBLE | WS_TABSTOP | WS_BORDER,
        140, 175, 140, 24, IDC_FILESRCE, NULL, 0 },
    { "static", WS_VISIBLE | SS_LEFT,
        50, 215, 130, 24, IDC_STATIC, "复制到文件:", 0 },
    { "edit", WS_VISIBLE | WS_TABSTOP | WS_BORDER,
        140, 210, 140, 24, IDC_FILEDEST, NULL, 0 },
    { "button", WS_VISIBLE | BS_AUTOCHECKBOX | WS_TABSTOP, 
        50, 250, 200, 26, IDC_CHKOVR, "覆盖已有文件", 0 },
    { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
        305, 35, 100, 26, IDC_CLFILE3, "刀位文件", 0 },
    { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
        305, 70, 100, 26, IDC_NCFILE3, "数控文件", 0 },
    { "button", WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP,
        305, 210, 100, 26, IDOK, "复制", 0 },
    { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
        305, 245, 100, 26, IDCANCEL, "取消", 0 }
};


static int
DialogFileCopyProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
    switch (message) {
    case MSG_INITDIALOG:
    {
        struct FileCopyInfo* fi = (struct FileCopyInfo*) lParam;
        
        fi->dfilename [0] = '\0';
        fi->sfilename [0] = '\0';

        ListDir (hDlg, IDC_DIRLST3, IDC_FILELST3, fi->dir);
        SetWindowAdditionalData2 (hDlg, (DWORD)lParam);
        return 1;
    }
        
    case MSG_COMMAND:
    {
    	struct FileCopyInfo *fi 
                = (struct FileCopyInfo*) GetWindowAdditionalData2 (hDlg);
        int nSelect;
        int id = LOWORD( wParam );
        int code = HIWORD ( wParam );

        switch ( id ) {
        case IDC_FILELST3:
            if (code == LBN_SELCHANGE) {
                nSelect = SendDlgItemMessage( hDlg, IDC_FILELST3, 
                                            LB_GETCURSEL, 0, 0);
                if (nSelect == -1)
                    break;
                SendDlgItemMessage (hDlg, IDC_FILELST3, LB_GETTEXT, 
                                nSelect, (LPARAM)fi->sfilename);
                SetWindowText ( GetDlgItem (hDlg, IDC_FILESRCE), fi->sfilename);
            }
            break;
            
        case IDC_CLFILE3:
            if (code != 0)
                break;

            GetAbsolutePathName (DIR_DATA_CL, fi->dir);
            if (access( fi->dir, F_OK ) == -1) {
                MessageBox (hDlg, "对不起,未找到刀位文件所在目录",
                        "提示信息", MB_OK | MB_ICONSTOP);
                break;
            }
            
            ChangeDirList (hDlg, IDC_DIRLST3, IDC_FILELST3, 
                                IDC_FILESRCE, fi->dir);
            break;
            
        case IDC_NCFILE3:
            if (code != 0)
                break;

            GetAbsolutePathName (DIR_DATA_NC, fi->dir);
            if (access( fi->dir, F_OK ) == -1) {
                MessageBox (hDlg, "对不起,未找到数控文件所在目录",
                        "提示信息", MB_OK | MB_ICONSTOP);
                break;
            }
            ChangeDirList (hDlg, IDC_DIRLST3, IDC_FILELST3, 
                            IDC_FILESRCE, fi->dir);
            break;
            
       case IDOK:
       {
            char msg [ PATH_MAX + 1];

            if (code != 0) break;
                
            GetWindowText (GetDlgItem(hDlg, IDC_FILESRCE), 
                                    fi->sfilename, NAME_MAX);
            if (fi->sfilename [0] == '\0') {
                MessageBox (hDlg, 
                    "请注意源文件名:\n\n输入的文件名中不要"
                    "夹杂空格,\n尤其头尾不要留有空格,\n文件名中不能使"
                    "用 / 字符.\n\n请输入正确的文件名.", 
                    "复制文件出错", 
                    MB_OK | MB_ICONINFORMATION);
                break;
            }
            
            strcpy (fi->sfullname, fi->dir);
            strcat (fi->sfullname, "/");
            strcat (fi->sfullname, fi->sfilename);
 
            if (access ( fi->sfullname, F_OK) == -1) {
                sprintf (msg, "文件 %s 不存在!", fi->sfilename);
                MessageBox (hDlg, msg, "复制文件出错", MB_OK | MB_ICONSTOP);
                break;
            }

            GetWindowText (GetDlgItem(hDlg, IDC_FILEDEST), fi->dfilename,
                     GetWindowTextLength(GetDlgItem(hDlg, IDC_FILEDEST)));
                     
            if (fi->dfilename[0] == '\0' ){
                MessageBox (hDlg, 
                        "请注意目标文件名:\n\n输入的文件名中不要"
                        "夹杂空格,\n尤其头尾不要留有空格,\n文件名中不能使用 /"
                        " 字符.\n\n请输入正确的目标文件名.", 
                        "复制文件出错", 
                        MB_OK | MB_ICONINFORMATION);
                break;
           }
           
           strcpy (fi->dfullname, fi->dir);
           strcat (fi->dfullname, "/");
           strcat (fi->dfullname, fi->dfilename);
           if (access (fi->dfullname, F_OK) != -1) {
           ///////// Copy the file now
               sprintf (msg, 
                    "目标文件:\n\n    %s\n\n已经存在,是否覆盖原文件?", 
                    fi->dfilename);
               if (!IsDlgButtonChecked (hDlg, IDC_CHKOVR)) {
                    if (MessageBox (hDlg, msg, "确认信息", 
                                    MB_YESNO | MB_ICONQUESTION)  == IDYES)
                        CopyFile (fi->sfullname, fi->dfullname);
                    else 
                        break;
                }
            }
            else
                CopyFile (fi->sfullname, fi->dfullname);
                
            EndDialog (hDlg, IDOK);
            break;
	    }
        
        case IDCANCEL:
            if (code != 0)
                break;

            EndDialog (hDlg, wParam);
            break;
        }
	
        break;
    }
    }
    return DefaultDialogProc (hDlg, message, wParam, lParam);
}

int FileCopyDialogBox ( HWND hWnd, struct FileCopyInfo *fi )
{
    if ( access (fi->dir, F_OK) == -1){ 
       return VACS_ERROR_PATHNOTEXIST;             
    }
  
    DlgFileCopyInfo.controls = CtrlFileCopyInfo;

    if (DialogBoxIndirectParam (&DlgFileCopyInfo, hWnd, 
          DialogFileCopyProc, (LPARAM)fi) == IDOK)
        return VACS_OK;
    else
        return VACS_ERROR_GUI;
}

/////////////////////////////////////////
DLGTEMPLATE DlgFileBrowseInfo = 
{
    WS_BORDER | WS_CAPTION, WS_EX_NONE,
    180, 80, 430, 295, "浏览文件", 0, 0, 8, NULL
};

CTRLDATA CtrlFileBrowseInfo [] = 
{
    { "static", WS_VISIBLE | SS_SIMPLE,
        10, 10, 40, 40, IDC_STATIC, "LOGO", 0 },
    { "static", WS_VISIBLE | SS_LEFT,
        50, 10, 90, 24, IDC_STATIC, "目录", 0 },
    { "static", WS_VISIBLE | SS_LEFT,
        142, 10, 260, 24, IDC_STATIC, "文件", 0 },
    { "listbox", WS_VISIBLE | WS_TABSTOP | LBS_NOTIFY | WS_VSCROLL | WS_BORDER,
        50, 35, 90, 195, IDC_DIRLST4, NULL, 0 },
    { "listbox", WS_VISIBLE | WS_TABSTOP | LBS_NOTIFY | WS_VSCROLL | WS_BORDER,
        142, 35, 138, 195, IDC_FILELST4, NULL, 0 },
    { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
        305, 35, 100, 26, IDC_CLFILE4, "刀位文件", 0 },
    { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
        305, 70, 100, 26, IDC_NCFILE4, "数控文件", 0 },
    { "button", WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP,
        305, 210, 100, 26, IDOK, "返回", 0 }
};

static int
DialogFileBrowseProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
    switch (message) {
    case MSG_INITDIALOG:
    {
        struct FileBrowseInfo* fi = (struct FileBrowseInfo*) lParam;
        
        ListDir (hDlg, IDC_DIRLST4, IDC_FILELST4, fi->dir);
        
        SetWindowAdditionalData2 (hDlg, (DWORD)lParam);
        return 1;
    }
        
    case MSG_COMMAND:
    {
        struct FileBrowseInfo* fi = 
            (struct FileBrowseInfo*) GetWindowAdditionalData2 (hDlg);
 
        switch (wParam) {
        case IDC_CLFILE4:
            GetAbsolutePathName (DIR_DATA_CL, fi->dir);
            if (access( fi->dir, F_OK ) == -1) {
                MessageBox( hDlg, "对不起,未找到刀位文件所在目录",
                        "提示信息", MB_OK | MB_ICONSTOP);
                break;
            }
            ChangeDirList (hDlg, IDC_DIRLST4, IDC_FILELST4, 0, fi->dir);
            break;
            
        case IDC_NCFILE4:
             GetAbsolutePathName (DIR_DATA_NC, fi->dir);
             if( access( fi->dir, F_OK ) == -1){
               MessageBox( hDlg, "对不起,未找到数控文件所在目录",
                        "提示信息", MB_OK | MB_ICONSTOP);
                break;
             }
             ChangeDirList (hDlg, IDC_DIRLST4, IDC_FILELST4, 0, fi->dir);
             break;
             
        case IDOK:
        {
            EndDialog (hDlg, IDOK);
            break;
	    }

        }
        break;
    }
    }
    return DefaultDialogProc (hDlg, message, wParam, lParam);
}

int FileBrowseDialogBox (HWND hWnd,struct FileBrowseInfo* fi )
{
    if ( access (fi->dir, F_OK) == -1) 
       return VACS_ERROR_PATHNOTEXIST;             

    DlgFileBrowseInfo.controls = CtrlFileBrowseInfo;
    DialogBoxIndirectParam (&DlgFileBrowseInfo, hWnd, 
                            DialogFileBrowseProc, (LPARAM)fi);
   return VACS_OK;                         
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -