精华内容
下载资源
问答
  • 本节将演示如何使用脚本,创建一个空白文档。首先创建一个空白的脚本文档,并保存在硬盘上某个位置。 接着输入脚本代码: //定义一个变量[Width],表示新文档的宽度。 var width = 560; //定义一个变量[height],...

    源自:http://coolketang.com/tutorials/menu2lesson1.php


    本节将演示如何使用脚本,创建一个空白文档。首先创建一个空白的脚本文档,并保存在硬盘上某个位置。

    接着输入脚本代码:

    //定义一个变量[Width],表示新文档的宽度。
    var width = 560;
    
    //定义一个变量[height],表示新文档的高度。
    var height = 560;
    
    //定义一个变量[resolution],表示新文档的分辨率。
    var resolution = 72;
    
    //定义一个变量[docName],表示新文档的名称。
    var docName = "New Document";
    
    //定义一个变量[mode],表示新文档的颜色模式。
    var mode = NewDocumentMode.RGB;
    
    //定义一个变量[initialFill],表示新文档的默认背景填充颜色。
    var initialFill = DocumentFill.TRANSPARENT;
    
    //定义一个变量[pixelAspectRatio],用来设置新文档的像素比率。
    var pixelAspectRatio = 1;
    
    //使用[Documents.add]命令创建一个新文档,将设置好的参数放在[add]方法里面。
    app.documents.add(width, height, resolution, docName, mode, initialFill, pixelAspectRatio);

    我们的脚本已经编写完成,把它保存下来。

    然后切换到Photoshop,然后依次点击[文件] > [脚本] > [浏览],打开刚刚保存的脚本文件。Photoshop将直接调用并执行该脚本。

    在弹出的[载入]窗口中,直接双击脚本名称,Photoshop将直接调用并执行该脚本。

    脚本执行后,Photoshop界面将会显示新文档。






    展开全文
  • 某些应用程序需要创建(空)文档,而不需要强迫用户选择file->new菜单命令,例如:当用户在应用程序的窗口中执行某个特定的命令时将创建一个文档;或者执行另外的菜单命令时,间接的创建文档,下面的技术解释了如何...

          某些应用程序需要创建新(空)文档,而不需要强迫用户选择file->new菜单命令,例如:当用户在应用程序的窗口中执行某个特定的命令时将创建一个文档;或者执行另外的菜单命令时,间接的创建文档,下面的技术解释了如何达到想要的目的:

          第一种技术:

          如果打算正确的再现“File->New”行为,最简单的方法是通过发送适当的WM_COMMANDD消息来模仿“File->New”菜单命令:

                     AfxGetMainWnd()->SendMessage(WM_COMMAND,ID_FILE_NEW);

    如果愿意,也可以采用PostMessage(WM_COMMAND,ID_FILE_NEW);这种指令通过正常的MFC消息映射处理来间接的调用CWinApp::OnFileNew().

     

          第二种技术:

          如果应用程序有多个文档模板对象,并且打算基于某个特定的文档模板来创建一个新文档,那么必须明确选择所使用的文档模板对象,并传输参数NULL来调用它自己的CMultiDocTemplate::OpenDocumentFile()函数

                   m_ptTemplate->OpenDocumentFile(NULL);

          必须采用某种途径来存储各种文档模板对象的指针,这样,才能在上面这行代码中正确的设置m_ptTemplate指针。通常来说,存储这些指针的最简单方法是作为应用程序来的成员变量。

          这样要编写代码来创建一个基于特定模板的新文档,就可以在代码的任何地方简单的使用下面的调用:

                  theApp.m_ptTemplate->OpenDocumentFile(NULL);

    附加注释:

    这两种解决方案都使用普通的 MFC文档模板对象创建机制 来创建新的文档对象、新的视图框架窗口、新的视图窗口。如果应用程序已经注册了多个文档模板( CWinApp::AddDocTemplate() ),那么第一种解决方案将正确的再现File->New行为,并提示用户选择要使用的文档模板----除非经过修改,不弹出对话框。

    另一方面,第二种解决方案允许代码明确的选择所要使用的文档模板对象,这种方法可以很好的控制MFC将要创建的文档、视图、视图框架窗口对象的类。

    如果打算使用第二种方案,并且不希望在CWinApp的派生类中暴露文档模板成员变量,那么可以把文档模板指针设为protected,而把文档创建逻辑封装在public成员变量中,代码如下:

     

    可以如下调用创建新文档、框架、视图

    CMyDoc1* pDoc=theApp.CreateNewDoc1();

    这种实现中使用封装函数的一个优点是,我们返回一个正确定义了类型的指针时,该指针指向最新创建过的文档。这样,客户代码得到一个“真实的”CMyDoc1*指针,而无需进一步的向下映射。

     

    展开全文
  • 一旦用户开始使用多于一个文档模板对象,MFC就会弹出一个New对话框,让用户选择需要的文档模板类型。当在应用程序的InitInstance()函数中调用AddDocTemplate()来注册多个文档模板对象时,MFC无法知道应该使用哪...

       一旦用户开始使用多于一个的文档模板对象,MFC就会弹出一个New对话框,让用户选择需要的文档模板类型。当在应用程序的InitInstance()函数中调用AddDocTemplate()来注册多个文档模板对象时,MFC无法知道应该使用哪一个文档模板对象来完成用户的“File->New”请求。因此,MFC弹出一个对话框,该对话框列出了 各种注册过的文档模板对象 以允许用户指出应该使用哪一个来调用CDocTemplate::OpenDocumentFile(),来创建一个新文档,以下MFC的源码,有助于理解这种逻辑:

     

    当应用程序启动时,在InitInstance()中由标准AppWizard生成的代码ProcessShellCommand()将直接调用CWinApp::OnFileNew(),调用顺如下:

    [cpp] view plain copy
    1. CWinApp::OnFileNew()->CDocManager::OnFileNew()  
    2. Void CWinApp::OnFileNew()  
    3. {  
    4.       if(m_pDocManager!=NULL)  
    5.       {  
    6.             m_pDocManager->OnFileNew();//m_pDocManager为CDocManager类型  
    7.       }  
    8. }  
    9. CDocManager::OnFileNew()  
    10. {  
    11.       //1、如果没有注册文档模板,提示错误  
    12.       if( m_templateList.IsEmpty() )  
    13.       {  
    14.             TRACE0("ERROR:no document templates registered with CWinApp./n");  
    15.             AfxMessageBox("AFX_IDP_FAILED_TO_CREATE_DOC");  
    16.             return ;  
    17.       }  
    18.       //2、默认选择第一个文档模板对象  
    19.       CDocTemplate* pTemplate=(CDocTemplate*)m_templateList.GetHead();  
    20.       //3、如何有多个注册过的文档模板对象,则弹出“New”对话框  
    21.       if( m_templateList.GetCount() > 1)  
    22.       {  
    23.             //显示对话框提示用户从多个文档模板中选择  
    24.             CNewTypeDlg dlg(&m_templateList);  
    25.             int nID=dlg.DoModal();  
    26.             if(nID==IDOK)  
    27.                   pTemplate=dlg.m_pSelectedTemplate;//4、存储所选择的模板对象的指针  
    28.             else  
    29.                   return;  
    30.       }  
    31.       //5、使用所选择的 文档模板对象 来创建新文档、框架窗口和视图  
    32.       pTemplate->OpenDocumentFile(NULL);  
    33. }  
     


    应用程序启动时,如果不想弹出对话框(直接用用户希望的 文档模板 创建新的空文档) 供用户选择文档模板,遵循以下步骤:

     

    第一步:在应用程序的InitInstance()函数中创建各种文档模板对象,并把指向每个对象的指针存储在 应用程序类 的成员变量中。

     

    第二步:使用ClassWizard在 应用程序类中 增加“File->New”菜单命令的句柄,在句柄内,从存储的 文档模板对象的指针 中选择你希望的文档模板对象指针,传递一个NULL参数来请求创建一个新(空)文档,如下:

    void CTestApp::OnFileNew() 
    {
           m_ptDefaultTemplate->OpenDocumentFile(NULL);
    }

    上面解决方案第二步时,标准的MFC消息映射机制 能够保证 在用户选择File->New菜单命令时调用自己的句柄( CMyApp::OnFileNew() ),而不是默认的CWinApp::OnFileNew()函数。

    上面代码段中的CNewTypeDlg类在其表中只显示那些文档模板资源ID的fileNewName字串不为空的文档模板对象。如果只有一个文档模板对象满足这一条件,那么就自动返回该对象,作为所“选择”的模板对象,而不显示对话框。为了更好的理解这种行为,看一下CNewTypeDlg()的伪代码,程序清单如下:

    [cpp] view plain copy
    1. BOOL CNewTypeDlg::OnInitDialog()  
    2. {  
    3.     //1、------得到对话框上的列表框的指针  
    4.     CListBox* pListBox = (CListBox*)GetDlgItem(AFX_IDC_LISTBOX);  
    5.     ASSERT(pListBox != NULL);  
    6.     // 使用文档模板填充列表  
    7.     pListBox->ResetContent();  
    8.     //2、------遍历应用程序的文档模板表  
    9.     POSITION pos = m_pList->GetHeadPosition();  
    10.     //通过名称在表中增加所有的CDocTemplates  
    11.     while (pos != NULL)  
    12.     {  
    13.         //3、------对每一个文档模板对象  
    14.         CDocTemplate* pTemplate = (CDocTemplate*)m_pList->GetNext(pos);  
    15.         ASSERT_KINDOF(CDocTemplate, pTemplate);  
    16.         //4、在把字符串添加到列表框中之前,检查“fileNewName”字串是否为空  
    17.         CString strTypeName;  
    18.         if (pTemplate->GetDocString(strTypeName, CDocTemplate::fileNewName) &&  
    19.            !strTypeName.IsEmpty())  
    20.         {  
    21.             // 增加到列表框  
    22.             int nIndex = pListBox->AddString(strTypeName);  
    23.             if (nIndex == -1)  
    24.             {  
    25.                 EndDialog(-1);  
    26.                 return FALSE;  
    27.             }  
    28.             pListBox->SetItemDataPtr(nIndex, pTemplate);  
    29.         }  
    30.     }  
    31.     int nTemplates = pListBox->GetCount();  
    32.     if (nTemplates == 0)  
    33.     {  
    34.         //5、如果为空,则list->error!  
    35.         TRACE0("Error: no document templates to select from!/n");  
    36.         EndDialog(-1); // abort  
    37.     }  
    38.     else if (nTemplates == 1)  
    39.     {  
    40.         // 6、如果只有一个,则自动选择这个文档模板对象 并赋值给item,不显示对话框  
    41.         m_pSelectedTemplate = (CDocTemplate*)pListBox->GetItemDataPtr(0);  
    42.         ASSERT_VALID(m_pSelectedTemplate);  
    43.         ASSERT_KINDOF(CDocTemplate, m_pSelectedTemplate);  
    44.         EndDialog(IDOK);    // 完成  
    45.     }  
    46.     else  
    47.     {  
    48.         // 把所选择的模板对象设置为第一个  
    49.         pListBox->SetCurSel(0);  
    50.     }  
    51.     //至此,将出现New对话框  
    52.     return CDialog::OnInitDialog();  
    53. }  
     

     


          每次当启动一个标准AppWizard生成的应用程序时,MFC就会自动的创建一个新(空)文档,同时还有关联的视图和框架窗口。你可能会很想知道,这个空文档是在代码的什么位置被创建的。同时,如果在应用程序启动时不初始创建任何文档?

    如果不想再在应用程序启动时打开一个新(空)文档应遵循以下步骤:

    [cpp] view plain copy
    1. 在InitInstance()函数中修改代码如下:  
    2. BOOL CTestApp::InitInstance()  
    3. {  
    4.        // ......  
    5.        // 解析 标准shell命令、DDE、打开文档 的命令行   
    6.       CCommandLineInfo cmdInfo;  
    7.       //取消默认的OnFileNew调用  
    8.       cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;  
    9.       ParseCommandLine(cmdInfo);  
    10.       // 分派命令行中确定的命令  
    11.       if (!ProcessShellCommand(cmdInfo))  
    12.             return FALSE;  
    13.       //......  
    14. }  
     

    解释:

    从MFC4.0版本开始,在应用程序启动时,程序在何处初始化新文档就不是非常明显了。你可能理解最好要调用CWinApp::OnFileNew(),但是这种调用来自于何处呢?实际上,导致CWinApp::OnFileNew()调用的整个过程都隐藏在这3行代码中:

    CCommandLineInfo cmdInfo;

    ParseCommandLine(cmdInfo);//遍历命令行,搜寻以字符'/'或'-'开头的选项,根据找到的命令行参数,设置cmdInfo对象的成员变量

    if(!processShellCommand(cmdInfo))//该函数根据cmdInfo中的m_nShellCommand变量 进行不同的函数调用

           return false;

          1、以上代码在堆栈中创建了一个名为cmdInfo的CCommandLineInfo对象,MFC将用该对象分析各种转换开关,并把对象的信息存储在该cmdInfo对象的public成员变量中,其中的各种转换开关可能出现在应用程序的命令行中。

          CCommandLineInfo类的定义如下:

          class CCommandLineInfo

          {

               //......

               enum {FileNew , FileOpen , FilePrint , FilePrintTo , FileDDE , AppUnregistr ,

                     FileNothing=-1 }m_nShellCommand;

              //......

          };

     

          2、cmdInfo对象创建时调用该类的(CCommandLineInfo)构造函数,该构造函数初始化m_nShellCommand成员,赋值CCommandLineInfo::FileNew;

     

          3、CWinApp::ParseCommandLine(cmdInfo)函数遍历命令行,搜寻以字符‘/’或 ‘-’开头的选项。对每一个找到的命令行参数

          ParseCommandLine()就对CmdInfo对象应用CCommandLineInfo::ParaseParam()方法,该方法根据各种命令行参数设置CmdInfo对象的成员变量,这些参数由PraseCommandLine()传送。只有在命令行中找到实际参数时,才改变m_nShellCommand成员,否则m_nShellCommand保留它上一次的值(即在构造函数中设置的值CCommandLineInfo::FileNew)。

     

          4、CWinApp::ParseCommandLine(cmdInfo)函数返回后CmdInfo对象作为一个参数调用ProcessShellCommand(cmdInfo)函数,该函数执行基于cmdInfo.m_nShellCommand值的相应动作。最常发生的动作如下表所示:

    cmdInfo.m_nShellCommand的数值                               ProcessShellCommand()进行的函数调用

    CCommandLineInfo::FileNew                                      CWinApp::OnFileNew();//这个函数不是虚函数

    CCommandLineInfo::FileOpen                                     OpenDocumentFile(cmdInfo.m_strFileName);

    CCommandLineInfo::FilePrint                                      m_pMainWnd->SendMessage(WM_COMMAND,

    CCommandLineInfo::FilePrintTo                                        ID_FILE_PRINT_DIRECT);

    CCommandLineInfo::FileNothing                                 None

    因此,可以看出cmdInfo对象的成员变量m_nShellCommand在第2步中,被初始化为了FileNothing,最终导致了ProcessShellCommand()内部调用什么也不做,正好达到了我们的目的。

    展开全文
  •  第一步:创建一个新的资源符号,其ID为IDR_NEWDRAWTYPE.然后,选择view->Resource Symbols菜单命令,接着单击弹出对话框的New按钮,在弹出的New Symbol对话框中填入IDR_NEWDRAWTYPE,这样就完成了改任务。

          下面的步骤说明了如何创建 具有 新的文档模板资源ID 的资源,在这些解释中该资源ID为IDR_NEWDRAWTYPE.

     

    第一步:创建一个新的资源符号,其ID为IDR_NEWDRAWTYPE.然后,选择view->Resource Symbols菜单命令,接着单击弹出对话框的New按钮,在弹出的New Symbol对话框中填入IDR_NEWDRAWTYPE,这样就完成了改任务。

     

    第二步:复制已有的IDR_DRAWTYPE菜单、图标、模板字符串资源,将新资源的ID改为IDR_NEWDRAWTYPE,并根据自己的需要修改资源

     

    第三步:把IDR_NEWDRAWTYPE模板字符串资源的fileNewName字段置空,这样所创建的文档模板就不会出现在MFC可能弹出的New对话框中了。

     

     

    展开全文
  • 这里,假设已经在应用程序类中存储了各种文档模板对象的指针,有2中方法可以创建文档时,打开2或多特定的视图。第种技术:在CDocument类中处理该行为。在文档类内使用ClassWizard重载OnNewDocument和...
  • 如何使用 Cyber RT 来创建一个新的组件 写在最前面的话:这部分全部来源apollo的源码内的文档。我只是搬运工,就是为了查看起来方便。后续会添加一些注释。 Apollo Cyber 运行时框架 (Apollo Cyber RT Framework) ...
  • 我想要做一个类似QQ聊天弹窗的功能,使用new BrowserWindow()创建一个新窗口作为消息弹窗的窗口。但遇到一个棘手的问题,就是当这个窗口被创建时,会强行将当前的窗口拉到新创建的这个窗口,导致用户在其他窗口操作...
  • 万万没想到,接到领导要求,让写... 运行nodejs代码,将指定路径下的 所有文件的文件名 写入到一个新的txt文件内。 实现:  1.创建一个js文件---readFile.js,里面写入如下代码: var fs = require('fs'); ...
  • 在 Android Studio 中,创建新项目: 如果您未打开项目,请在 Welcome to Android Studio 窗口中,点击Start a new Android Studio project。如果您已打开项目,请选择 File > New Project。 在 New Project 屏幕中...
  • 在文档窗口创建的时候 ,它缺省总是会新建一个新文档 , 那么怎么让它不新建文档呢?就这个问题 , 我对文档视图窗口应用程序启动时的文档创建机制 , 稍稍的浅浅挖了一下 , 做了一个详细的分析 , 希望能够对初学者...
  • 文章来自:http://www.cppblog.com/totti1006/archive/2009/04/17/36115.html在文档窗口创建的时候 ,它缺省总是会新建一个新文档 , 那么怎么让它不新建文档呢?就这个问题 , 我对文档视图窗口应用程序启动时的...
  • RomaJS是一个Web应用程序,用于创建和编辑ODD文档,以自定义和生成用于。 该Web应用程序是用React / Redux编写的,旨在易于编译和部署为静态站点。 TEI维护的在线服务通过提供的API在线处理了一些关键的转换。 TEI...
  • 实战1-9 在HTML5文档中创建导航多数网站都有导航链接。无论是超链接还是按钮形式的,它们通常都被元素与文档的其他...1. 相关要点结构化元素创建一个容器,用于放置整个HTML5文档或者文档内任意区域的导航。结果...
  • HQChart小程序教程2-如何使用新版2D画布创建一个K线图小程序 Canvas 2D 接口hqchart使用2D画布步骤使用微信新版画布经验总结 小程序 Canvas 2D 接口 小程序画布。2.9.0 起支持一套 Canvas 2D 接口(需指定 type ...
  • 在文档窗口创建的时候 ,它缺省总是会新建一个新文档 , 那么怎么让它不新建文档呢?就这个问题 , 我对文档视图窗口应用程序启动时的文档创建机制 , 稍稍的浅浅挖了一下 , 做了一个详细的分析 , 希望能够对初学者...
  • 在最新ABBYY FineReader 14的新建任务窗口中,现在可以从PDF文档和图像以及受支持的任何文件类型创建Microsoft Word文档,还可以将多个文件转换并合并到一个Word文档。 转换一个或多个文件 1、打开FineReader 14,...
  • mfc多文档程序启动默认创建一个文档视图,通过文件新建方式创建视图非常不方便。 本文描述了,如何根据需要,手动添加多文档视图,并且获取到文档视图的对象指针,非常方便操作。 编译环境 vs2010 多文档项目名 ...
  • 首先创建一个空白的脚本文档,并保存在硬盘上某个位置。 接着输入脚本代码: //定义一个变量[docRef],用来表示新建的文档。 //相对于上一节来说,[app.documents.add]命令只传入宽度和高度参数来创建一个空白文档...
  • 创建一个新的1000 x 800px文档, 然后单击 "图层" 面板底部的 "创建新填充或调整图层" 图标以添加渐变图层。使用 "颜色" #e8d2d6 在左侧创建渐变填充, 将 #ddbcc0 向右, 然后将 "角度" 更改为107。 步骤(2) ...
  • '创建一个文件操作对象实例 Set objFSO = CreateObject("Scripting.FileSystemObject") '要打开的文件 ObjFile=trim(request("filesname")) '从文浏览控件中获取 IF objFSO.FileExists(ObjFile) then Set ...
  • 大多数Spring用户都熟悉Java以及用于创建和构建后端服务器的工具。前端可以使用普通的JavaScript编写,只要它相对简单,并且您愿意以这种方式搜索罕见的示例和教程。但是,你这些天更容易找到文档和使用工具,如教程...
  • 在文档窗口创建的时候 ,它缺省总是会新建一个新文档 , 那么怎么让它不新建文档呢?就这个问题 , 我对文档视图窗口应用程序启动时的文档创建机制 , 稍稍的浅浅挖了一下 , 做了一个详细的分析 , 希望能够对初学者...
  • 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: ...
  • ActiveReports是款专注于 .NET 和 .NET Core 平台的报表控件。通过拖拽式报表设计器,可以快速地设计 Excel表格、Word文档、图表、数据过滤、数据钻取、精准套打等类型报表,全面满足 WinForm、ASP.NET、ASP.NET ...
  • 在这篇文章中,我将介绍如何在Java下使用PredictionIO来简单地构建一个博客推荐引擎。我没找到太多在Java下使用PredictionIO的文档。所以,本文对那些寻找在Java下使用PredictionIO的完整教程的人可能会有用。“30天...
  • 为每一个甲方用户建立独立的csv文档记录数据。举例:当输入‘张三’的时候,程序生成一个张三的csv文档,记录数据。并且可以通过执行menu()函数实现:1. 查询‘张三’的历史...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,214
精华内容 1,285
关键字:

如何创建一个新文档