非模态对话框创建的时候出错

我先说一下我创建非模态对话框的思路,
资源视图中创建一个对话框并创建类Coption,在菜单中加入一个按键coption,
在CChildView类中创建一个Coption类对象指针,在CChildView类中用Coption类对象指针创建非模态对话框,并判断Coption类对象指针是否为null,如果不为null,则不创建,将焦点给非模态对话框就行,创建的时候,将CChildView类作为Coption类构造参数传入Coption类中,当非模态对话框点击取消时,销毁非模态对话框,并发送消息给CChildView类,让他将Coption类对象指针赋值为null,否则非模态对话框只能出来一次,
但是现在发送消息会报错,
下面贴出四个文件代码,忘大佬们解答

CChildView.h:

#pragma once
#include"Coption.h"

// CChildView 窗口

class CChildView : public CWnd
{
// 构造
public:
    CChildView();

// 特性
public:

// 操作
public:

// 重写
    protected:
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

// 实现
public:
    virtual ~CChildView();

    // 生成的消息映射函数
protected:
    afx_msg void OnPaint();
    DECLARE_MESSAGE_MAP()
protected:
    Coption* m_option;
public:
    afx_msg void On32771();     //为菜单option按钮
    afx_msg LRESULT ON_GOODBYE(WPARAM wparam, LPARAM lparam);
};

ChildView.cpp:


#include "stdafx.h"
#include "MFCApplication5.h"
#include "ChildView.h"
#include "resource.h"       // 主符号

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CChildView

CChildView::CChildView()
{
    m_option = NULL;
}


CChildView::~CChildView()
{
}


BEGIN_MESSAGE_MAP(CChildView, CWnd)
    ON_WM_PAINT()
    ON_COMMAND(ID_32771, &CChildView::On32771)
    ON_MESSAGE(WM_GOODBYE,ON_GOODBYE)
END_MESSAGE_MAP()

LRESULT  CChildView::ON_GOODBYE(WPARAM wparam, LPARAM lparam)
{
    delete m_option;
    m_option = NULL;

    return 0;
 }

// CChildView 消息处理程序

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) 
{
    if (!CWnd::PreCreateWindow(cs))
        return FALSE;

    cs.dwExStyle |= WS_EX_CLIENTEDGE;
    cs.style &= ~WS_BORDER;
    cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, 
        ::LoadCursor(nullptr, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), nullptr);

    return TRUE;
}

void CChildView::OnPaint() 
{
    CPaintDC dc(this); // 用于绘制的设备上下文

    // TODO: 在此处添加消息处理程序代码

    // 不要为绘制消息而调用 CWnd::OnPaint()
}



void CChildView::On32771()
{
    if (NULL!=m_option)
    {
        SetFocus();
        MessageBox(_T("m_option不为空"));
    }
    else
    {
        m_option = new Coption;
        m_option->Create(IDD_DIALOG1,this);
        m_option->ShowWindow(SW_SHOW);
        MessageBox(_T("m_option为空"));
    }
    // TODO: 在此添加命令处理程序代码
}

Coption.h:

class Coption : public CDialogEx
{
    DECLARE_DYNAMIC(Coption)

public:
    Coption(CWnd* pParent = nullptr);   // 标准构造函数
    Coption(CView* pview);   // 标准构造函数
    virtual ~Coption();

// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_DIALOG1 };
#endif

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnBnClickedCancel();
    virtual void PostNcDestroy();
private:
    CView* p_view;
public:
    afx_msg void OnBnClickedOk();
};

Coption.cpp:


#include "stdafx.h"
#include "MFCApplication5.h"
#include "Coption.h"
#include "afxdialogex.h"


// Coption 对话框

IMPLEMENT_DYNAMIC(Coption, CDialogEx)

Coption::Coption(CWnd* pParent /*=nullptr*/)
    : CDialogEx(IDD_DIALOG1, pParent)
{

}

Coption::Coption(CView* pview /*=nullptr*/)
{
    p_view = pview;
}

Coption::~Coption()
{

}

void Coption::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(Coption, CDialogEx)
    ON_BN_CLICKED(IDCANCEL, &Coption::OnBnClickedCancel)
    ON_BN_CLICKED(IDOK, &Coption::OnBnClickedOk)
END_MESSAGE_MAP()


// Coption 消息处理程序


void Coption::OnBnClickedCancel()
{
    // TODO: 在此添加控件通知处理程序代码

    //CDialogEx::OnCancel();
    DestroyWindow();
}



void Coption::PostNcDestroy()
{
    // TODO: 在此添加专用代码和/或调用基类
    CDialogEx::PostNcDestroy();

    p_view->SendMessage(WM_GOODBYE, 0,0);                //屏蔽这一行就不会报错 


}


void Coption::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    //CDialogEx::OnOK();
    DestroyWindow();

}

c++

2个回答

我回答过一个几乎和你这个类似的问题,只不过用的是win32。
图片说明

https://ask.csdn.net/questions/760642

你先参考下,像那个提问者一样,先采纳回答,可以用MFC专门给你写一个,并且具有向主程序发消息的功能。

weixin_44826062
moon19961996 就是创建非模态对话框的时候,好像都要先在view视图类中创建一个非模态对话框类的指针,然后判断这个指针是否为空,来创建非模态对话框,但是这样的话,第一次创建打开之后,再次关掉。第二次因为指针已经不为空了,所以非模态对话框不会出来 ,所以在非模态对话框中发送消息,当非模态对话框销毁时,发送消息,让视图类中的非模态对话框指针为空,但是不知道为什么,发送消息这一行会报错,额,如果实在不理解,就帮我写一个吧,用mfc写一个项目,在项目中点击一个菜单选项,弹出非模态对话框
5 个月之前 回复

你这是全部源码吗,我用Win32 API 创建对话框需要资源文件的 (.rc)
可以参考:
https://docs.microsoft.com/zh-cn/windows/win32/menurc/resources-reference
另注明:有一个叫 见了你女王大人喵姐还不跪下 的恶意刷低我声望,不要太在意他

weixin_42375906
Rotch 回复见了你女王大人喵姐还不跪下: 我是真的服,你再这样我得追究了
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
子线程中非模态对话框与消息队列
在子线程中创建了非模态对话框,那么其消息是来自子线程的消息队列还是主线程的消息队列
非模态对话框如何判断我点击的是IDOK按钮
我想通过单击非模态对话框上的“确定”按钮,实现一些东西,如何判断我单击的就是IDOK按钮
模态对话框和非模态对话框11111111
我之前用(dlg.domodal==idok)创建的模态对话框,后来我想把他改成费模态的 但是我应该是用什么语句 使我单击非模态对话框上的“确定”来获取对话框中的内容呢
VC 非模态对话框为何总是置顶显示
小弟遇到一个问题,不知道谁能帮忙解决一下,先谢谢啦~ 我的单文档程序,点击按钮后生成一个非模态对话框,可是对话框一直是显示在前端,当我鼠标点在单文档程序上进行操作时,对话框一直挡在前面,这点让我不能理解啊,因为活动窗口是主窗口了啊,怎么让主窗口可以显示在对话框之上呢??不知道哪位大神能指点一下的
关于非模态对话框的创建释放与释放
创建了一个对话框,父窗口为桌面窗口 m_pDecorBMapDlg = new CDecorBMapDlg; m_pDecorBMapDlg->Create(CDecorBMapDlg::IDD,GetDesktopWindow()); 然后将它销毁 m_pDecorBMapDlg->DestroyWindow(); SAFE_DELETE(m_pDecorBMapDlg); 然后再创建就出错了
非模态对话框出错,非模态对话框
我先说一下我创建非模态对话框的思路, 资源视图中创建一个对话框并创建类Coption,在菜单中加入一个按键coption, 在CChildView类中创建一个Coption类对象指针,在CChildView类中用Coption类对象指针创建非模态对话框,并判断Coption类对象指针是否为null,如果不为null,则不创建,将焦点给非模态对话框就行,创建的时候,将CChildView类作为Coption类构造参数传入Coption类中,当非模态对话框点击取消时,销毁非模态对话框,并发送消息给CChildView类,让他将Coption类对象指针赋值为null,否则非模态对话框只能出来一次,但是现在发送消息会报错, 下面贴出四个文件代码: ``` Coption.h: #pragma once // Coption 对话框 class Coption : public CDialogEx { DECLARE_DYNAMIC(Coption) public: Coption(CWnd* pParent = nullptr); // 标准构造函数 Coption(CView* pview); // 标准构造函数 virtual ~Coption(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_DIALOG1 }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedCancel(); virtual void PostNcDestroy(); private: CView* p_view; public: afx_msg void OnBnClickedOk(); }; ``` Coption.cpp: // Coption.cpp: 实现文件 // #include "stdafx.h" #include "MFCApplication5.h" #include "Coption.h" #include "afxdialogex.h" // Coption 对话框 IMPLEMENT_DYNAMIC(Coption, CDialogEx) Coption::Coption(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DIALOG1, pParent) { } Coption::Coption(CView* pview /*=nullptr*/) { p_view = pview; } Coption::~Coption() { } void Coption::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(Coption, CDialogEx) ON_BN_CLICKED(IDCANCEL, &Coption::OnBnClickedCancel) ON_BN_CLICKED(IDOK, &Coption::OnBnClickedOk) END_MESSAGE_MAP() // Coption 消息处理程序 void Coption::OnBnClickedCancel() { // TODO: 在此添加控件通知处理程序代码 //CDialogEx::OnCancel(); DestroyWindow(); } void Coption::PostNcDestroy() { // TODO: 在此添加专用代码和/或调用基类 CDialogEx::PostNcDestroy(); p_view->SendMessage(WM_GOODBYE, 0,0); //屏蔽这一行就不会报错 } void Coption::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 //CDialogEx::OnOK(); DestroyWindow(); } ``` CChildView.cpp: // ChildView.cpp: CChildView 类的实现 // #include "stdafx.h" #include "MFCApplication5.h" #include "ChildView.h" #include "resource.h" // 主符号 #ifdef _DEBUG #define new DEBUG_NEW #endif // CChildView CChildView::CChildView() { m_option = NULL; } CChildView::~CChildView() { } BEGIN_MESSAGE_MAP(CChildView, CWnd) ON_WM_PAINT() ON_COMMAND(ID_32771, &CChildView::On32771) ON_MESSAGE(WM_GOODBYE,ON_GOODBYE) END_MESSAGE_MAP() LRESULT CChildView::ON_GOODBYE(WPARAM wparam, LPARAM lparam) { /*delete m_option;*/ m_option = NULL; return 0; } // CChildView 消息处理程序 BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) { if (!CWnd::PreCreateWindow(cs)) return FALSE; cs.dwExStyle |= WS_EX_CLIENTEDGE; cs.style &= ~WS_BORDER; cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, ::LoadCursor(nullptr, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), nullptr); return TRUE; } void CChildView::OnPaint() { CPaintDC dc(this); // 用于绘制的设备上下文 // TODO: 在此处添加消息处理程序代码 // 不要为绘制消息而调用 CWnd::OnPaint() } void CChildView::On32771() { if (NULL==m_option) { /*SetFocus(); MessageBox(_T("m_option不为空"));*/ m_option = new Coption; m_option->Create(IDD_DIALOG1, this); MessageBox(_T("m_option为空")); } m_option->ShowWindow(SW_SHOW); // TODO: 在此添加命令处理程序代码 } ``` CChildView.h: // ChildView.h: CChildView 类的接口 // #pragma once #include"Coption.h" // CChildView 窗口 class CChildView : public CWnd { // 构造 public: CChildView(); // 特性 public: // 操作 public: // 重写 protected: virtual BOOL PreCreateWindow(CREATESTRUCT& cs); // 实现 public: virtual ~CChildView(); // 生成的消息映射函数 protected: afx_msg void OnPaint(); DECLARE_MESSAGE_MAP() protected: Coption* m_option; public: afx_msg void On32771(); afx_msg LRESULT ON_GOODBYE(WPARAM wparam, LPARAM lparam); }; ``` 报错如下: ![图片说明](https://img-ask.csdn.net/upload/201908/15/1565872965_493989.png) 如果实在没人愿意回答,讲一下编写非模态对话框心得也行
多个非模态对话框的消息处理
我在用C调用windows API写程序的时候,遇到一些问题。程序需要同时显示多个非模态对话框,可是,这个时候消息处理就出现了问题。第二个被创建的对话框总是接收不到消息。另外,这几个对话框是相互重叠的,第二个位于顶层,但是在显示的时候第一个的一个本来应该被覆盖的按钮总是显示出来。 附上主函数消息循环的代码: enter code here while(GetMessage(&msg, hwnd, 0, 0)) { //分发窗口消息 if((hDialogType == 0 || !IsDialogMessage(hDialogType, &msg)) && (hDialogDetails == 0 || !IsDialogMessage(hDialogDetails, &msg)) && (hDialogDonations == 0 || !IsDialogMessage(hDialogDonations, &msg))) { TranslateMessage(&msg); DispatchMessage(&msg); } } return msg.wParam;
MFC单击按钮弹出模态对话框的相关问题
主对话框本身是一个模态对话框,有一个按钮。 从资源视图插入dialog,然后在类向导中添加类rrrDlg1 在主对话框的按钮点击事件中添加如下代码: ``` void CrrrDlg::OnBnClickedOk(){ //TODO: 在此添加控件通知处理程序代码 rrrDlg1 dlg1; INT_PTR n1Response = dlg1.DoModal(); if (n1Response == IDOK){ } else if (n1Response == IDCANCEL){ } CDialogEx::OnOK(); } ``` 其中DoModal()有波浪线提示错误:类rrrDlg1没有成员DoModal 问题来了:怎样建立的对话框是模态对话框,怎样又是非模态的?在整个建立的流程中并没有相关选项,只在实例化之后告诉我没有DoModal这个方法,太郁闷了!!
mfc弹出非模态对话框出错
mfc弹出非模态对话框,然后重载非模态对画框的onok函数,在其中destroywindow,并重载postncdestroy中delete非模态对话框类指针,这样没有问题,为什么在destroywindow前加弹出一个Afx对话框,运行时会出现问题
VC6.0如何实现非模态对话框间的拼接效果 ,像VC6.0编程环境和photoshop一样?
像VC6.0编程环境中的workspace 和 工具箱还有photoshop右侧的一列工具栏一样, 既可以 单独以对话框的形式显示,又可以互相靠在一起组成一个统一界面,怎么实现呢?我的程序调用多个非模态的对话框 ,界面 整体比较乱,希望用这种方式拼接成一个完整的操作界面
MFC 非模态对话框 关闭 会不会调用变量的析构函数?
我有一个子对话框,头文件中声明了变量a。 例如a是一个队列。 使用a的过程中,会不断动态申请新空间。 队列a是有析构函数的。 如果是局部变量,局部函数运行完后,队列可以自动调用析构函数。 但上述例子,关闭对话框后,却没有响应a的析构函数。 注,我重载了onclose。如果不能自动析构,我打算在里面手动析构a。 但我不太理解,为什么关闭对话框,析构函数不自动调用? 还有要注意什么别的问题……
模态对话框和非模对话框哪个好用些
我的非模对话框出现内存溢出,虽然也可以释放,但非常麻烦,而模态对话框没这麻烦却在运行中无法同时操作几个对话框,想听下大神选择
Mfc在模态对话框上非模态创建listbox焦点问题
在模态对话框上创建一个Gridctrl中每一个Row里会有一个item里additem了一个非模太的listbox控件,在响应item左键单击后会show出这个listbox,在listbox的show函数里setfocys一直不起作用,发现焦点一直在最最外层的Dlg里,怎么能够把焦点设置到listbox上
模态对话框中使用MessageBox
在模态对话框弹出后用MessageBox弹出提醒语句,但是要在模态对话框关闭后才出现,有什么办法是在模态对话框基础上弹出MessageBox呢?请教,谢谢!
ocx创建非模态对话框后点击按钮不能刷新父窗口
我创建了一个ocx,用于显示分屏播放视频窗口,在点击右下角的按钮后显示一个非模态对话框用于切换更多分屏,点击对话框上的按钮后能调用父窗口的代码,比如切换分屏方法,但不能进行刷新窗口操作,比如调用Invalidate() 由于更多切换分屏按钮是做成点击更多按钮后显示的,可能会显示在分屏窗口之上,导致不能点击按钮而点中了分屏,所以做成了弹出对话框,这个有没有好的解决方法? 把更多按钮直接做在ocx的空白界面上是可以刷新的,里面的代码包含刷新事件,但做在对话框中就不行,这个问题搞了很久没搞出来,请问怎么解决。
我的模态对话框不能显示
我按照《VisualC++从入门到精通》一书的第六章6。2。2的显示对话框的视频所讲进行操作,可是我的模态对话框却怎么也不能显示,这是什么原因呢?代码如下: // kljDlg.cpp : implementation file // #include "stdafx.h" #include "klj.h" #include "kljDlg.h" #include"NEWDLg,h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CKljDlg dialog CKljDlg::CKljDlg(CWnd* pParent /*=NULL*/) : CDialog(CKljDlg::IDD, pParent) { //{{AFX_DATA_INIT(CKljDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CKljDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CKljDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CKljDlg, CDialog) //{{AFX_MSG_MAP(CKljDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CKljDlg message handlers BOOL CKljDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } void CKljDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CKljDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CKljDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CKljDlg::OnButton1() { // TODO: Add your control notification handler code here CSHowDLg dlg; dlg.DoModal() } 所显示的错误信息如下: --------------------Configuration: jhDlg - Win32 Debug-------------------- Compiling... jhDlg.cpp D:\安装软件\VC6。0\VC6\新建文件夹\jh\jhDlg.cpp(176) : error C2065: 'CShowDLg' : undeclared identifier D:\安装软件\VC6。0\VC6\新建文件夹\jh\jhDlg.cpp(176) : error C2146: syntax error : missing ';' before identifier 'dlg' D:\安装软件\VC6。0\VC6\新建文件夹\jh\jhDlg.cpp(176) : error C2065: 'dlg' : undeclared identifier D:\安装软件\VC6。0\VC6\新建文件夹\jh\jhDlg.cpp(177) : error C2228: left of '.DoModal' must have class/struct/union type 执行 cl.exe 时出错. jhDlg.exe - 1 error(s), 0 warning(s)
java模态对话框不显示组件
将对话框设置成模态对话框时里面的组件都不显示,将设置成模态对话框的语句放在最后面时,组件可以显示,但没有作用
Qt 制作状态栏,不受模态对话框的影响。
我制作了一个置顶的类似于Windows任务栏的对话框,主要用来显示主程序的网络连接和输入法切换等信息。 但是当主程序弹出其他的对话框的时候,导致任务栏无法操作,获取不了焦点。我怎么做到这个状态栏置顶并且不会受主程序弹出的模态对话框的影响,也就是模态对话框只对主程序有影响,而不会影响我的任务状态栏。
javascipt问题:关闭模态对话框,启动新的窗口
点击按钮后,会跳出一个模态对话框, 代码如下: <a href=\"#\" onclick=\"openwin('/news/qtpage/openZjysCx.jsp','250','500');\" class=\"Menu\"><strong>查询</strong></a> 在这个弹出的模态对话框中显示的页面上有某一个查询按钮。 现在我想做的是,点击该查询按钮后,原来的模态对话框消失,然后使用另一个窗口来显示查询后的结果。该如何做呢? 目前,我查询出来的结果老是在原来的模态对话框中显示,很烦。可不可以不要在原来的模态对话框显示。 请有相关经验的说一下! 补充:点击查询时,是调用后台的action的。我想在action中动态的输出javascipt,关闭窗口,但是没有成功的。 是什么时候调用window.close(); 还是有其他的解决方式呢? [b]问题补充:[/b] 抱歉,描述的不是很对的。是使用下面的代码打开一个新窗口的。代码如下: window.open(pageURL,name,parameters) 在这个弹出的新窗口中显示的页面上有某一个查询按钮。 现在我想做的是,点击该查询按钮后,原来的窗口消失,然后使用另一个窗口来显示查询后的结果。该如何做呢? 目前,我查询出来的结果老是在原来的窗口中显示,很烦。可不可以不要在原来的窗口中显示,另外起一个新的窗口显示最新查询出来的结果
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队译者 | 凯隐编辑 | Jane出品 | AI科技大本营(ID:rgznai100)本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知说话者数秒的音频来合成其讲话音频,即网
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
【管理系统课程设计】美少女手把手教你后台管理
【后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 一、这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,
4G EPS 第四代移动通信系统
目录 文章目录目录4G EPSEPS 的架构EPS 的参考模型E-UTRANUEeNodeBEPCMME(移动性控制处理单元)S-GW(E-RAB 无线访问承载接入点)P-GW(PDN 接入点)HSS(用户认证中心)PCRF(计费规则与策略)SPR(用户档案)OCS(在线计费)OFCS(离线计费)接口类型Uu 接口(空中接口,UE 和 AN 之间)S1 接口(AN 和 CN 之间)S1-U 接口和
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问