精华内容
下载资源
问答
  • 向下移动纵滚动条到页面下边的某处,点击按钮打开的模态窗口会自动显示在整个主画面的最顶端的中央(纵滚动条自动跳到最开始了)。 但希望能打开的窗口不跳到最上边显示,而是动作在哪个位置的页面,就弹出显示在...
  • // 设为模态 jDialog.setModal(true); // 居中显示 jDialog.setLocationRelativeTo(null); // 焦点监听 失去关闭(即点击窗口外 关闭JDialog) jDialog.addWindowFocusListener(new WindowFocusListener() {
    JDialog jDialog = new JDialog();
     // 置顶显示
     jDialog.setAlwaysOnTop(true);
     
     // 设为模态 通常单独设置是无效的 还要设置父组件 即弹框出现时,父组件不允许被点击
     // 如果在操作允许的情况 要偷懒的话 可以让弹框置顶显示 点击弹窗外 直接把窗口关闭 这样不需要设置父组件
     jDialog.setModal(true);
     
     // 居中显示
     jDialog.setLocationRelativeTo(null);
     
     // 焦点监听 失去后关闭(即点击窗口外 关闭JDialog)
     jDialog.addWindowFocusListener(new WindowFocusListener() {
                                    @Override
                                    public void windowGainedFocus(WindowEvent e) {
    
                                    }
    
                                    @Override
                                    public void windowLostFocus(WindowEvent e) {
                                        jDialog.setVisible(false);
                                        jDialog.dispose();
    
                                    }
                                });
    
    展开全文
  • 在使用软件时,会遇到各式各样的对话框,弹出的对话框大致可以分为两大类,模态对话框和非模态对话框,怎么对这两种对话框进行区分呢?简单来说,对于模态对话框,在未关闭之前,无法再对同一软件的其他窗口进行操作...

    Qt创建模态和非模态对话框

    在使用软件时,会遇到各式各样的对话框,弹出的对话框大致可以分为两大类,模态对话框和非模态对话框,怎么对这两种对话框进行区分呢?简单来说,对于模态对话框,在未关闭之前,无法再对同一软件的其他窗口进行操作,即强制性用户交互;而非模态对话框与之相反,未关闭之前,依然可以操作同软件下的其他窗口,即非强制性用户交互。

    Qt中根据功能需求,可以分别对这两类对话框进行设置与构建。

    首先来看模态对话框,强制交互的模态对话框一经打开,程序的运行会进入阻塞状态,直至对话框关闭或触发其他动作。其简单部署如下:

    	// 点击菜单栏中的新建选项,弹出模态对话框 
        connect(ui->actionnew, &QAction::triggered, [=](){
            QDialog dlg(this);
            dlg.resize(400, 200);
            dlg.exec();
        });
    

    非模态的对话框的创建与模态对话框类似,但由于QDialog dlg(this);是在栈上创建的,当lambda表达式执行该变量会被释放,又考虑到非模态的对话框打开后不会进入阻塞状态,因此将在堆上进行创建,并且设置点击关闭后释放推内存空间以避免内存泄漏。

        connect(ui->actionnew, &QAction::triggered, [=](){
            QDialog *dlg = new QDialog(this);
            dlg->resize(400,200);
            dlg->setAttribute(Qt::WA_DeleteOnClose);
            dlg->show();
        });
    

    其中setAttribute()的参数可以查找帮助文档,其中包含很多功能,可以根据需要进行搜索。
    在这里插入图片描述

    展开全文
  • 学习笔记

    2019-03-08 14:52:20
    2. 存在多个窗口时,弹出模态窗口怎么设置其他窗口不能使用为静态。 3. 怎么静态进程弹窗提醒用户升级。 4. CproductFormatParams 的使用。 void CProductFormatParams::InsertParam(const string& ...

    1.  URL_GETCAT怎么解析json,怎么Post到网络连接。

    2. 存在多个窗口时,弹出模态窗口怎么设置其他窗口不能使用为静态。

    3. 怎么静态进程弹窗提醒用户升级。

    4. CproductFormatParams 的使用。

    void CProductFormatParams::InsertParam(const string& strKey, const string& strValue)
    {
        m_mapParams[strKey] = strValue;
    }

    string CProductFormatParams::GetStringParams()
    {
        string strParams;

        for (auto iter = m_mapParams.begin(); iter != m_mapParams.end(); iter++)
        {
            if (!strParams.empty())
            {
                strParams += "&";
            }
            strParams += iter->first;
            strParams += "=";
            strParams += iter->second;
                
        }

        return strParams;
    }

     

    createthread(null, 0, doloaddatethread, this, null ,&dwthreadid)

    closehandle(hthread)

     

    DWORD dwtick =  GetTickCount(
        VOID
        );     得到加载所用时间

    SHSTDAPI_(BOOL) SHGetSpecialFolderPathA(_Reserved_ HWND hwnd, _Out_writes_(MAX_PATH) LPSTR pszPath, _In_ int csidl, _In_ BOOL fCreate);

     

        DesktopLinkDatas vecDesktopLinkDatas;
        WCHAR szPath[MAX_PATH] = { 0 };
        SHGetSpecialFolderPathW(NULL, szPath, CSIDL_DESKTOPDIRECTORY, 0);
        if (EnumDesktopLink(szPath, vecDesktopLinkDatas) == -1)
            return FALSE;

        memset(szPath, 0, MAX_PATH);
        SHGetSpecialFolderPathW(NULL, szPath, CSIDL_COMMON_DESKTOPDIRECTORY, 0);
        if (EnumDesktopLink(szPath, vecDesktopLinkDatas) == -1)
            return FALSE;

     

     CScanSoftWares::EnumDesktopLink(LPWSTR szPath, DesktopLinkDatas& vecDesktopLinkDatas)
    {
        IShellFolder* pShell = NULL;
        if (FAILED(SHGetDesktopFolder(&pShell))) 
        {
            return -1;
        }
        IShellFolder* pFolder = NULL;
        ITEMIDLIST* pItem = NULL;
        if (FAILED(pShell->ParseDisplayName(NULL, NULL, szPath, NULL, &pItem, NULL)))
        {
            return -1;
        }
        if (FAILED(pShell->BindToObject(pItem, NULL,
            IID_IShellFolder, (LPVOID*)&pFolder)))
            return -1;

        pShell->Release();
        if (NULL == pFolder)
            return -1;

        IEnumIDList* pEnum = NULL;
        if (FAILED(pFolder->EnumObjects(NULL, SHCONTF_NONFOLDERS, &pEnum)))
            return -1;

        pItem = NULL;
        ULONG ulFetched = 0;
        WCHAR szLnkPath[MAX_PATH] = { 0 };
        WCHAR szLnkName[MAX_PATH] = { 0 };

        WIN32_FIND_DATAW fd = { 0 };
        while (S_OK == pEnum->Next(1, &pItem, &ulFetched)) 
        {
            SHGetDataFromIDListW(pFolder, pItem, SHGDFIL_FINDDATA, &fd, sizeof(fd));
            swprintf(szLnkName, L"%s", fd.cFileName);
            wchar_t *lnk = wcsrchr(szLnkName, L'.');
            if (lnk == nullptr)
                lnk = (szLnkName);
            
            if (0 == wcscmp(lnk, kLnkExt))
            {
                swprintf(szLnkPath, L"%s\\%s", szPath, szLnkName);
                xstring sPath, sIconPath;
                ParseLnk2Path(szLnkPath, sPath, sIconPath);
                if (!sPath.empty())
                {
                    TCHAR tmp_path[MAX_PATH] = { 0 };
                    wcscpy(tmp_path, sPath.c_str());
                    PathRemoveFileSpec((LPWSTR)tmp_path);
                    xstring path = xstring(tmp_path);
                    path.append(TEXT("\\"));
                    
                    DesktopLinkData data;
                    data.exe_ = ::PathFindFileName((LPWSTR)sPath.c_str());
                    xstring lnk_name = szLnkName;
                    data.lnk_name_ = lnk_name.substr(0, lnk_name.rfind('.'));
                    data.full_exe_path_ = sPath;
                    data.path_ = path;
                    data.path_icon_ = sIconPath;

                    vecDesktopLinkDatas.push_back(data);
                }
            }
        }
        
        pEnum->Release();
        pFolder->Release();

        return 0;
    }

    Shell即是外壳,Shell的基础是桌面,桌面之下衍生出很多子文件夹,以及系统的“网络”、“控制面板”、“C:/”等文件夹,这些文件夹里又有很多层子文件夹。这里需要用到几个接口和结构体:

    • IShellFolder接口,用来定位某个文件夹,并对其下的文件和文件夹进行操作。
    • IShellFolder2接口,从IShellFolder接口继承而来,提供了一些新的功能。
    • ItemIDList,每个文件夹或者文件都维护自己的ItemIDList,里面记录了它们的所有属性,比如文件名、类型、大小、修改时间。也就是说每个文件逻辑上都对应一个二维表,表有一个ID列,有一个值列,每行的记录用链表实现,Windows提供了ItemIDList这样的一个结构。

     

    • EnumIDList,一个文件夹下所有的对象(文件和文件夹),形成了一个有序链表。对这个链表进行遍历即可找到所有的文件。链表的每个节点就是上面的ItemIDList

    可以以这样的树状结构来看上述概念:

    每个实际的文件夹对应一个IShellFolder,每个IShellFolder可以获得一个EnumIDList,遍历每个EnumIDList可以获得每个ItemIDList,每个ItemIDList就已经与文件一一对应。

     

    基础知识

    Windows中的目录可以理解为是一个树型结构,树的根是“桌面”,“桌面”中一般拥有“我的电脑”、“网上邻居”、“回收站”等文件夹。这个我们称它为命名空间。物理上呢,“桌面”一般位于“C:/Documents and Settings/用户名称/桌面”。

    IShellFolder接口用于管理文件夹,所有Shell命名空间中的文件夹对象都暴露这个接口。我们可以通过SHGetDesktopFolder方法获得“桌面”的IShellFolder接口。当然,最后不使用的时候要调用IShellFolder的Release方法释放接口。

    通过调用“桌面”的IShellFolder接口的EnumObjects方法获得IENUMIDLIST接口的指针。IENUMIDLIST接口用于遍历IShellFolder接口表示的文件夹下的所有对象(这里的对象是指文件或者文件夹)。通过IENUMIDLIST接口可以遍历子对象的ITEMIDLIST数组。ITEMIDLIST数组表示一个对象的绝对或者相对路径。当前可以将ITEMIDLIST数组理解为给Shell使用的,代替我们常用的“WINDOWS/system32”这样的路径表示形式。而这里通过IENUMIDLIST接口遍历获得的IENUMIDLIST数组是一个相对路径,相对于当前IShellFolder的路径。调用IShellFolder的BindToObject方法,并传递IENUMIDLIST数组的相对路径,可以获得IENUMIDLIST数组表示的子文件夹的IShellFolder接口。这样我们可以通过递归或者循环遍历以“桌面”开始的整个逻辑目录树。

    Shell命名空间

    简介

    下面详细介绍一下上面提到的Shell使用的路径。Shell管理的文件和文件夹有存储在磁盘上的,也有不存储在磁盘上的,如“网络打印机”、“网络邻居”、“控制面板”、“回收站”等。这些不存储在磁盘上的文件或文件夹成为虚拟对象。像“网络打印机”这样的虚拟对象,根本不需要存储在磁盘上,它只存储几个网络打印机的链接。而像“回收站”这样的虚拟对象,它位于磁盘上,但需要进行与普通文件或文件夹不同的操作。例如,虚拟对象可能在Explorer中显示的是两个对象,但它们可能被存储在同一个磁盘文件中。 
          在文件系统的命名空间中,包含两种对象:文件夹对象和文件对象。文件夹对象是树的节点,它包含文件和子文件夹。文件对象是树的叶子,它可能是一个磁盘文件也可能是一个虚拟对象。如果一个文件夹不是文件系统的一部分,它通常被称为虚拟文件夹。

    标识命名空间中的对象

    在使用命名空间中的对象前,我们必须先标识它。由于在文件系统中文件名是可以重复使用的,所以我们使用完整限定名(完整路径),如:“C:/MyDocs/MyFile.htm”。但是这无法表示虚拟对象。所以Shell使用一种替代的标识,这个标识能够表示命名空间中所有的对象。

    Item IDs

    在一个文件夹中,每一个对象都有一个item ID,它等价于文件或文件夹名称的功能。item ID实际上是一个SHITEMID结构: 
          typedef struct _SHITEMID 
          { 
                USHORT cb; 
                BYTE abID[1]; 
          } SHITEMID, * LPSHITEMID; 
          其中abID成员是对象的标识符。abID的长度没有定义。它的值由包含它的文件夹来探测。abID的大小是可变的,所以cb成员存储SHITEMID结构的字节数。 
          因为item ID不是用于显示,所以包含它的文件夹通常为它分配一个“显示名称”。这个“显示名称”由Windows Explorer用来显示一个文件夹的内容。

    Item ID 列表

    Item ID很少单独使用,它通常是item ID列表中的一部分。item ID 列表与系统路径意义相同。但item ID 列表不是一个字符串,而是一个ITEMIDLIST结构,这个结构是一序列的item ID(一个或者多个),并由2个字节的NULL表示结束。item ID 列表中的每一个item ID 都对应命名空间中的一个对象。它们的次序表示命名空间中的路径,这很像文件系统路径。下面的图表显示了对应于“C:/MyDocs/MyFile.htm”的ITEMIDLIST的结构:

    无标题

    PIDLs

    命名空间对象通常由ITEMIDLIST结构的指针来标识,或者指向一个item ID 列表的指针(PIDL)。为了方便,以后使用PIDL表示ITEMIDLIST结构,而不是item ID 列表的指针。上面图表显示的PIDL被称为“全的”或“完整的”PIDL。一个全的PIDL是由“桌面”开始,包含所有中间的路径的item ID。 
          全PIDL不常被使用。很多函数和方法使用相对PIDL。相对PIDL的根是一个文件夹,不是“桌面”。虽然它不是一个对象的唯一标识符,但是它要比全PIDL短,并且对于某些应用来说它能够充分说明该对象。 
          最常见的相对PIDL是单层PIDL,它相对于这个对象的父文件夹。它仅包含这个对象的item ID以及NULL结束符。多层的PIDL通常包含两个或更多的item ID,并且表示出了从父文件夹到这个对象的路径,这个路径中会包含中间的一些子文件夹。注意,单层PIDL也可能是一个全PIDL(如“我的电脑”相对“桌面”的相对PIDL)。特殊的,“桌面”对象是“桌面”的子文件夹。

    分配PIDL

    虽然PIDL与系统路径很相似,但是它们还是有一些不同。主要的不同是如何分配和销毁它们的内存。在应用中,通常是系统分配PIDL使用的保持item ID的内存,而用户释放它。 
          所以,我们必须使用IMalloc接口来分配和释放PIDL。可以调用SHGetMalloc来获取IMalloc接口指针,调用IMalloc::Alloc方法来分配内存,IMalloc::Free方法来释放内存。最后调用IMalloc::Release释放指针。

     

    展开全文
  • 模态对话框的销毁

    2015-05-03 12:40:22
    文章末尾我遗留了一个问题,即当销毁非模态对话框后,需要置创建该非模态对话框的指针为NULL,但是具体是怎么操作呢?具体在哪里设置呢?非模态对话框的销毁动作执行的是哪一个函数呢?即当点击窗口最右上角的关闭...

    前面写过一篇关于模态和非模态对话框的文章,关于模态对话框和非模态对话框的创建、显示,以及和父对话框的传值 。文章末尾我遗留了一个问题,即当销毁非模态对话框后,需要置创建该非模态对话框的指针为NULL,但是具体是怎么操作呢?具体在哪里设置呢?

    非模态对话框的销毁动作执行的是哪一个函数呢?即当点击窗口最右上角的关闭按钮后,执行了哪一个函数?

    我的程序中是利用父窗口类的成员变量来创建的非模态子对话框,那么当关闭子对话框后需要使指针为NULL,当然其实大可不必这样,只需要在父类的析构函数中delete就行。但我的设计是点击创建的按钮可以显示,也可以隐藏,即如果没有创建子对话框,那么就创建子对话框,如果已经显示,再次点击就隐藏,再次点击就显示。里面涉及到if对指针PnewDlg的判断。那么就需要在子对话框关闭后使PnewDlg=NULL。

    由于现在是回忆啊,所以写到有些问题可能记不清当时是为什么会那样了。比如当时我在网上找到的资料,关闭子对话框的时候需要重写PostNcDestroy函数和OnCancel函数。当时我记得我故意写了一个afxmessagebox测试了一下,结果关闭子对话框的时候并没有弹出提示信息,而是当我关闭父窗口后才弹出这个afxmessagebox对话框。至于具体原因,我现在也无法考证当时的情况。

    那么如何重写这两个函数呢?

    void CFTPCilentDlg::PostNcDestroy()  //。在屏幕上一个窗口被删除后,框架会调用CWnd::PostNcDestroy,这是一个虚拟函数,程序可以在该函数中完成删除窗口对象的工作
    {
        // TODO: 在此添加专用代码和/或调用基类
    //  isnull=TRUE;
    //  AfxMessageBox("ddddd");
        CDialogEx::PostNcDestroy();  //先调用父类的
        delete this;     //添加这一句就可以
    }
    void CFTPCilentDlg::OnCancel()
    {
        // TODO: 在此添加专用代码和/或调用基类
        //CDialogEx::OnCancel();
        DestroyWindow();
        isnull=TRUE;
    }

    其中在OnCancel 函数中调用了DestroyWindow函数。isnull是我的一个全局的BOOL型变量,用来给父窗口传值,以方便使pNewDlg=NULL。那么创建的函数代码片如下:

    void CMyPlayerDlg::OnBnClickedButtonftp()
    {
        // TODO: 在此添加控件通知处理程序代码
        if (isnull)// 证明子窗口已经关闭
        {
            pftp=NULL;
            isnull=FALSE;
        }
            if (!pftp)
            {
                pftp=new  CFTPCilentDlg(this);    
                pftp ->Create(IDD_DIALOGftp, GetDesktopWindow());//GetDesktopwindow()不能少,也不能填NULL。
                pftp ->ShowWindow(SW_SHOWNA);//想获得焦点就SW_SHOWNA,否则SW_SHOW也可
            }
            else
            {
                if (pftp->IsWindowVisible())
                {
                    pftp->ShowWindow(HIDE_WINDOW);
                }
                else
                    pftp->ShowWindow(SW_SHOWNORMAL);
    }

    最上面的一个if判断就是利用全局变量isnull来标示子窗口是关闭了还是隐藏了。那么执行这段代码后,点击按钮,就会创建,显示,隐藏,显示。。。

    到此为止。下面我引用一篇关于MFC中创建,关闭对话框的函数调用顺序:(引用自此处

    MFC应用程序中处理消息的顺序
    1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc
    2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数
    3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数
    4.OnWndMsg() 该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg()函数不能找到这样的处理函数的话,则把消息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数
    5.OnCommand() 该函数查看这是不是一个控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息不是控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件; 如果他不是一个控件通知(或者如果控件拒绝映射的消息)OnCommand()就会调用OnCmdMsg()函数
    6.OnCmdMsg() 根据接收消息的类,OnCmdMsg()函数将在一个称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是一个框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数

    MFC应用程序创建窗口的过程
    1.PreCreateWindow() 该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数 (可以设置窗口风格等等)
    2.PreSubclassWindow() 这也是一个重载函数,允许首先子分类一个窗口
    3.OnGetMinMaxInfo() 该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者 最小尺寸
    4.OnNcCreate() 该函数也是一个消息响应函数,响应WM_NCCREATE消息,发送消息以告诉窗口的客户区即将被创建
    5.OnNcCalcSize() 该函数也是消息响应函数,响应WM_NCCALCSIZE消息,作用是允许改变窗口客户区大小
    6.OnCreate() 该函数也是一个消息响应函数,响应WM_CREATE消息,发送消息告诉一个窗口已经被创建
    7.OnSize() 该函数也是一个消息响应函数,响应WM_SIZE消息,发送该消息以告诉该窗口大小已经发生变化
    8.OnMove() 消息响应函数,响应WM_MOVE消息,发送此消息说明窗口在移动
    9.OnChildNotify() 该函数为重载函数,作为部分消息映射被调用,告诉父窗口即将被告知一个窗口刚刚被创建

    MFC应用程序关闭窗口的顺序(非模态窗口)
    1.OnClose() 消息响应函数,响应窗口的WM_CLOSE消息,当关闭按钮被单击的时候发送此消息
    2.OnDestroy() 消息响应函数,响应窗口的WM_DESTROY消息,当一个窗口将被销毁时,发送此消息
    3.OnNcDestroy() 消息响应函数,响应窗口的WM_NCDESTROY消息,当一个窗口被销毁后发送此消息
    4.PostNcDestroy() 重载函数,作为处理OnNcDestroy()函数的最后动作,被CWnd调用

    MFC应用程序中打开模式对话框的函数调用顺序
    1.DoModal() 重载函数,重载DoModal()成员函数
    2.PreSubclassWindow() 重载函数,允许首先子分类一个窗口
    3.OnCreate() 消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建
    4.OnSize() 消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化
    5.OnMove() 消息响应函数,响应WM_MOVE消息,发送此消息,以告诉窗口正在移动
    6.OnSetFont() 消息响应函数,响应WM_SETFONT消息,发送此消息,以允许改变对话框中控件的字体
    7.OnInitDialog() 消息响应函数,响应WM_INITDIALOG消息,发送此消息以允许初始化对话框中的控件,或者是创建新控件
    8.OnShowWindow() 消息响应函数,响应WM_SHOWWINDOW消息,该函数被ShowWindow()函数调用
    9.OnCtlColor() 消息响应函数,响应WM_CTLCOLOR消息,被父窗口发送已改变对话框或对话框上面控件的颜色
    10. OnChildNotify() 重载函数,作为WM_CTLCOLOR消息的结果发送

    MFC应用程序中关闭模式对话框的顺序
    1.OnClose() 消息响应函数,响应WM_CLOSE消息,当”关闭”按钮被单击的时候,该函数被调用
    2.OnKillFocus() 消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输入焦点以前被发送
    3.OnDestroy() 消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送
    4.OnNcDestroy() 消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被发送
    5.PostNcDestroy() 重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用

    打开无模式对话框的顺序
    1.PreSubclassWindow() 重载函数,允许用户首先子分类一个窗口
    2.OnCreate() 消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建
    3.OnSize() 消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化
    4.OnMove() 消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动
    5.OnSetFont() 消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中控件的字体

    以上这些的执行都是按给定的顺序执行!

       到今天,我的毕设算是基本搞完了,接下来的时间就是对我的程序进行一些优化,当然也谈不上优化,就是再减少一些bug的存在。然后再接着写几篇论文,记录整理一下。
       拙见,小记!
    
    展开全文
  • 最近需要完成的东西

    2017-12-06 23:46:00
    1. 如何给对话框增加背景图,有几种方式,并且每个方式的优缺点 ...4. 调用Windows自带的打开窗口怎么记住上次的路劲,怎么变成模态的等 5. messagebox和afxmessagebox的区别,并且如何设置模态的 6. XML文件
  • 1.编写代码_商品类目查询 (1)描述怎么设计一个树型的表结构 设置一个父节点,父节点下有...在后台点击新增商品,打开新增商品的选项卡,如何点击选择类目,打开一个模态窗口,该窗口中有个easyui树的显示,树上默...
  • VC++常用功能实例

    2010-01-25 23:28:46
    ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个主窗口下方的状态条◆ 18 ◆如何让Cscrollview类中控制其...
  • ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个主窗口下方的状态条◆ 18 ◆如何让Cscrollview类中控制其...
  • javascript函数的解释

    2011-02-26 11:03:52
    其实就是搞清做什么,怎么做的问题,先把流程图画出来,拆解开,一个个做好了然后再合并。理论的东西我不会讲,直接举例哈! function g(o){return document.getElementById(o);} function hitover(n) { for(i=1...
  • VC++ 专家指导.doc

    2012-07-14 09:06:49
    (56)Disable一个非模态对话框的客户区? 140 (57)关于使用SetClassLong和SetCapture问题 140 (58)动画控件? 142 (59)错误声明的消息? 143 (59)怎样模拟鼠标动作? 144 (60)改变对话框标题字体? 145 (61)怎样知道...
  • ios开发记录

    2015-08-06 23:12:11
    //有交叉就怎么怎么样 //Activity 活动 Indicator指示器 // UIActivityIndicatorView *ai = [[UIActivityIndicatorView alloc] init]; // ai.activityIndicatorViewStyle = ...
  • }else{//设置成为模态显示并其可现 dlg.setModal(true); dlg.setVisible(true); } } }); //模态显示按钮的触发事件 bt2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    SettingDlg.h 设置对话框类文件 LocalInfoDlg.h 查看本地信息对话框类文件 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 如题。 FTP、HTTP 多线程断点续传下载文件 源码 如题。 gdiplus应用实例 如...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

模态窗口怎么设置