win32sdk 中非模态对话框弹出一个messgebox,但messagebox无法关闭

vs2010新建一个win32应用程序,然后添加一个对话框资源idd_dialog1。点击确定按钮会弹出一个messagebox,但是点击消息框的确定按钮无反应。

删除系统自动生成的代码,将下面的代码复制到工程中。

 #include "stdafx.h"
#include "testdlg.h"

#define MAX_LOADSTRING 100

// 全局变量:
HINSTANCE hInst;                                // 当前实例
TCHAR szTitle[MAX_LOADSTRING];                  // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING];            // 主窗口类名

BOOL                InitInstance(HINSTANCE, int);
INT_PTR CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    MSG msg;

    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }

    // 主消息循环:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!IsDialogMessage(msg.hwnd,&msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    return (int) msg.wParam;
}


BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // 将实例句柄存储在全局变量中

   hWnd =CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,WndProc);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

INT_PTR CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // 分析菜单选择:
        switch (wmId)
        {
        case IDOK:
            MessageBox(hWnd,_T("无法关闭!"),_T("郁闷"),MB_OK);
            break;
        case IDCANCEL:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: 在此添加任意绘图代码...
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

1个回答

return DefWindowProc(hWnd, message, wParam, lParam);
这个写在switch外面。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
模态对话框中使用MessageBox
在模态对话框弹出后用MessageBox弹出提醒语句,但是要在模态对话框关闭后才出现,有什么办法是在模态对话框基础上弹出MessageBox呢?请教,谢谢!
模态对话框和非模态对话框11111111
我之前用(dlg.domodal==idok)创建的模态对话框,后来我想把他改成费模态的 但是我应该是用什么语句 使我单击非模态对话框上的“确定”来获取对话框中的内容呢
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对话框,运行时会出现问题
非模态对话框出错,非模态对话框
我先说一下我创建非模态对话框的思路, 资源视图中创建一个对话框并创建类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) 如果实在没人愿意回答,讲一下编写非模态对话框心得也行
java模态对话框不显示组件
将对话框设置成模态对话框时里面的组件都不显示,将设置成模态对话框的语句放在最后面时,组件可以显示,但没有作用
子线程中非模态对话框与消息队列
在子线程中创建了非模态对话框,那么其消息是来自子线程的消息队列还是主线程的消息队列
py+selenium怎么定位自动弹出的showModalDailog模态对话框?
如下图:弹出的对话框就是一个showModalDailog模态对话框(找开发确认过了),该对话框是一进入到交易就自动弹出的,弹出后如果不关闭无法进行任何操作,我想点击 手工输入 ,那需要先定位到这个对话框,但是我不知道该怎么定位??请教各路大神指点。 ![图片说明](https://img-ask.csdn.net/upload/201812/13/1544666918_222800.png)
非模态对话框如何判断我点击的是IDOK按钮
我想通过单击非模态对话框上的“确定”按钮,实现一些东西,如何判断我单击的就是IDOK按钮
VC 非模态对话框为何总是置顶显示
小弟遇到一个问题,不知道谁能帮忙解决一下,先谢谢啦~ 我的单文档程序,点击按钮后生成一个非模态对话框,可是对话框一直是显示在前端,当我鼠标点在单文档程序上进行操作时,对话框一直挡在前面,这点让我不能理解啊,因为活动窗口是主窗口了啊,怎么让主窗口可以显示在对话框之上呢??不知道哪位大神能指点一下的
Qt 制作状态栏,不受模态对话框的影响。
我制作了一个置顶的类似于Windows任务栏的对话框,主要用来显示主程序的网络连接和输入法切换等信息。 但是当主程序弹出其他的对话框的时候,导致任务栏无法操作,获取不了焦点。我怎么做到这个状态栏置顶并且不会受主程序弹出的模态对话框的影响,也就是模态对话框只对主程序有影响,而不会影响我的任务状态栏。
使用Qt制作一个自定义的状态栏对话框,置顶,如何不被弹出的字对话框遮挡(不能设置为非模态)
现在程序要求有一个状态栏类似于Windows的任务栏一样,永远置顶悬浮。又不允许 将子对话框设置为非模态的情况下可以操作那个状态栏,现在已经可以置顶,但是当有 模态对话框弹出的时候,无法操作状态栏。
模态对话框和非模对话框哪个好用些
我的非模对话框出现内存溢出,虽然也可以释放,但非常麻烦,而模态对话框没这麻烦却在运行中无法同时操作几个对话框,想听下大神选择
Mfc在模态对话框上非模态创建listbox焦点问题
在模态对话框上创建一个Gridctrl中每一个Row里会有一个item里additem了一个非模太的listbox控件,在响应item左键单击后会show出这个listbox,在listbox的show函数里setfocys一直不起作用,发现焦点一直在最最外层的Dlg里,怎么能够把焦点设置到listbox上
vc++6.0如何实现基于对话框模态对话框中编辑框的内容显示在主对话框静态文本中?
vc++6.0基于对话框如何实现在模态对话框中输入一个数,然后点击确定按钮将编辑框中的数值显示在主对话框的静态文本中。(注:静态文本的默认值为10)求具体步骤和代码!
非模态对话框创建的时候出错
我先说一下我创建非模态对话框的思路, 资源视图中创建一个对话框并创建类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调用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;
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) 在这个弹出的新窗口中显示的页面上有某一个查询按钮。 现在我想做的是,点击该查询按钮后,原来的窗口消失,然后使用另一个窗口来显示查询后的结果。该如何做呢? 目前,我查询出来的结果老是在原来的窗口中显示,很烦。可不可以不要在原来的窗口中显示,另外起一个新的窗口显示最新查询出来的结果
ext模态对话框
用Ext写了一个模态的编辑窗口,可以编辑一些数据。然后在关闭这个模态窗口之前,需要有个提示对话框,例如Ext.Msg.alert。结果发现使用Ext.Msg.alert弹出的提示对话框不是模态的,跑到模态窗口后面去了。 但是如果直接使用js的alert弹出模态提示框。 请问如何才能让Ext.Msg.alert弹出的对话框也是模态的呢(不关闭它无法操作编辑窗口)? [b]问题补充:[/b] 我使用的是Firefox,网上找了一下,好像和z-index有关,继续摸索中...
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
相关热词 c# 引用mysql c#动态加载非托管dll c# 两个表数据同步 c# 返回浮点json c# imap 链接状态 c# 漂亮字 c# 上取整 除法 c#substring c#中延时关闭 c#线段拖拉
立即提问