MFC 自定义控件显示问题【内附具体代码】 5C

各位大神,

我自定义了一个ctrllist控件,写在了单文档的CView类OnInitialUpdate中,但是显示出来确实一个一个控件慢慢的出来,不知道怎么搞得?请帮忙

void CQCOMMultiDnloadFHLoaderView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();

GetParentFrame()->RecalcLayout();
ResizeParentToFit();

/************************************************************************/
InitListCtrl();
FullListCtrl();

//[]
strcpy(m_swVerPath, m_cfgData.swVerPath);
for (int i=0; i<maxLoopNum; ++i) {
    m_nEnable[i] = m_cfgData.bEnable[i];
    m_nComPort[i] = m_cfgData.nComPort[i];

    m_pCheckEnable[i]->SetCheck(m_nEnable[i]);

    CString str;
    for (int j=3; j<=256; ++j) {
        str.Format(_T("COM%d"), j);
        m_pComboboxPort[i]->AddString(str);
    }
    CQCOMMultiDnloadFHLoaderView::set_DropDownHight(*m_pComboboxPort[i], 20);
    m_pComboboxPort[i]->SetCurSel(m_nComPort[i]-3); // first COM3
    m_pComboboxPort[i]->EnableWindow(m_nEnable[i]);

    m_pEditTime[i]->SetWindowText("00m:00s");

    //SendMessage(WM_US_INFOLOOP, lp, (LPARAM)"Ready");

    SendMessage(WM_US_STATUS, i, m_nEnable[i] ? READY:DISENABLE);

    m_pButtonStart[i]->EnableWindow(m_nEnable[i]);
}

UpdateData(FALSE);

}

void CQCOMMultiDnloadFHLoaderView::InitListCtrl()
{
CRect rcListCtrl;
CWnd* pRect = GetDlgItem(IDC_STATIC_RECT);
if (NULL == pRect) {
return;
}
pRect->GetWindowRect(&rcListCtrl);
ScreenToClient(&rcListCtrl);

m_cf = new CFont;
m_cf->CreateFont(17,0,0,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,(LPCTSTR)("Verdana"));

m_pListCtrl = new CListCtrlCustom();
m_pListCtrl->Create(WS_VISIBLE|WS_BORDER, rcListCtrl, this, IDC_LISTCTRL_RECT);
DWORD dwExStyle = LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT;//|LVS_EX_FULLROWSELECT;
m_pListCtrl->SetExtendedStyle(dwExStyle);
m_pListCtrl->RegOnSettingRect(OnSettingRect);
m_pListCtrl->SetRowHeight(25);
m_pListCtrl->ShowWindow(SW_SHOW);

m_pListCtrl->SetFont(m_cf);

int col = -1;
m_pListCtrl->InsertColumn(++col, _T("Loop"),         LVCFMT_CENTER, 82);
m_pListCtrl->InsertColumn(++col, _T("Port"),         LVCFMT_CENTER, 85);
m_pListCtrl->InsertColumn(++col, _T("Time"),         LVCFMT_CENTER, 75);
m_pListCtrl->InsertColumn(++col, _T("Info"),         LVCFMT_CENTER, 267);
m_pListCtrl->InsertColumn(++col, _T("Status"),       LVCFMT_CENTER, 80);
m_pListCtrl->InsertColumn(++col, _T("Run"),          LVCFMT_CENTER, 60);
m_pListCtrl->InsertColumn(++col, _T("Reset"),        LVCFMT_CENTER, 60);
m_pListCtrl->InsertColumn(++col, _T("Statistics"),   LVCFMT_CENTER, 85);

}

void CQCOMMultiDnloadFHLoaderView::FullListCtrl()
{
int i;
CString cc;

CWnd* parWnd = 1 ? this:(CWnd*)m_pListCtrl;

for (i=0; i<maxLoopNum; ++i) {
    // Loop
    cc.Format(_T("Loop[%d]"), i+1);
    m_pCheckEnable[i] = new CButton();
    m_pCheckEnable[i]->Create((LPCTSTR)(cc), WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_AUTOCHECKBOX,
        CRect(0, 0,80, 20), parWnd, m_nCtrlIDEnable[i]);

    // Port
    m_pComboboxPort[i] = new CComboBox();
    m_pComboboxPort[i]->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|CBS_DROPDOWNLIST|WS_VSCROLL,
        CRect(0, 0, 80, 20), parWnd, m_nCtrlIDPort[i]);

    // Time
    m_pEditTime[i] = new CEdit();
    m_pEditTime[i]->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_READONLY,
        CRect(0, 0, 80, 20), parWnd, m_nCtrlIDTime[i]);

    // Info
    m_pEditInfo[i] = new CEdit();
    m_pEditInfo[i]->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_READONLY,
        CRect(0, 0, 80, 20), parWnd, m_nCtrlIDInfo[i]);

    //Status
    //m_pStaticStatus[i] = new CXColorStatic(); // mark

#if 0
//m_pStaticStatus[i] = new CXColorStatic(); // mark
m_pStaticStatus[i]->Create(_T("Status"), WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_CENTER,
CRect(0, 0, 80, 20), parWnd, m_nCtrlIDStatus[i]);
#else
switch (i) {
case 0: m_pStaticStatus[i] = &m_ctrlStatic1; break;
case 1: m_pStaticStatus[i] = &m_ctrlStatic2; break;
case 2: m_pStaticStatus[i] = &m_ctrlStatic3; break;
case 3: m_pStaticStatus[i] = &m_ctrlStatic4; break;
case 4: m_pStaticStatus[i] = &m_ctrlStatic5; break;
case 5: m_pStaticStatus[i] = &m_ctrlStatic6; break;
case 6: m_pStaticStatus[i] = &m_ctrlStatic7; break;
case 7: m_pStaticStatus[i] = &m_ctrlStatic8; break;
}
#endif

    // Run
    m_pButtonStart[i] = new CButton();
    m_pButtonStart[i]->Create(_T("Start"), WS_CHILD|WS_VISIBLE|WS_TABSTOP,
        CRect(0, 0, 80, 20), parWnd, m_nCtrlIDStart[i]);

    // Reset
    m_pButtonReset[i] = new CButton();
    m_pButtonReset[i]->Create(_T("Reset"), WS_CHILD|WS_VISIBLE|WS_TABSTOP,
        CRect(0, 0, 80, 20), parWnd, m_nCtrlIDReset[i]);

    //Statistics
    m_pEditStatistics[i] = new CEdit();
    m_pEditStatistics[i]->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_READONLY,
        CRect(0, 0, 80, 20), parWnd, m_nCtrlIDStatistics[i]);
}

//设置字体格式
for (i=0; i<maxLoopNum; ++i) {
    int col = -1;
    int rowCnt = m_pListCtrl->GetItemCount(); // rowCnt == i
    m_pListCtrl->InsertItem(rowCnt, _T(""));

    m_pCheckEnable[i]->SetFont(m_cf);
    m_pListCtrl->SetItemEx(i, ++col, m_pCheckEnable[i]);

    m_pComboboxPort[i]->SetFont(m_cf);
    m_pListCtrl->SetItemEx(i, ++col, m_pComboboxPort[i]);

    m_pEditTime[i]->SetFont(m_cf);
    m_pListCtrl->SetItemEx(i, ++col, m_pEditTime[i]);

    m_pEditInfo[i]->SetFont(m_cf);
    m_pListCtrl->SetItemEx(i, ++col, m_pEditInfo[i]);

    //m_pStaticStatus[i]->SetFont(m_cf);
    m_pStaticStatus[i]->SetBold(TRUE, TRUE);
    m_pStaticStatus[i]->SetFont(_T("Calibri"), 14, TRUE);
    m_pListCtrl->SetItemEx(i, ++col, m_pStaticStatus[i]);

    m_pButtonStart[i]->SetFont(m_cf);
    m_pListCtrl->SetItemEx(i, ++col, m_pButtonStart[i]);

    m_pButtonReset[i]->SetFont(m_cf);
    m_pListCtrl->SetItemEx(i, ++col, m_pButtonReset[i]);

    m_pEditStatistics[i]->SetFont(m_cf);
    m_pListCtrl->SetItemEx(i, ++col, m_pEditStatistics[i]);
}

//+
this->UpdateWindow();

}

2个回答

主要是注意添加时机的问题:
如果放在CView的OnCreate中创建CListCtrl是显示不出来的,原因是CView自身还没有创建好呢。
可以在在CView的OnInitialUpdate方法中创建CListCtrl,如下图所示图片说明

m0_37980902
EIGHTFIVEHOU 你好,我就是写在OnInitialUpdate里面的,由于是自定义的里面还有combox等控件,不知道为什么控件是一个一个显示出来?
接近 2 年之前 回复

一次插入的数据量太多了??

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MFC自定义类中数据怎样传递给文本框控件输出

在MFC中,自定义了一个视频处理类,目的将处理后的每帧图像输出到picture控件显示并将产生的整型数据通过文本框控件输出。问题是不知怎样将控件变量同类中变量建立联系,使得类中数据可以输出。

mfc中listcontrol控件无法正确显示出插入的bmp图片资源

如题,但是蹊跷的是,直接使用mfc自带的框架图片“IDR_MAINFRAM”却能正确显示。 两段对比如下: 第一段是可以正确显示图片的主要代码部分,位于对话框初始化函数中: ``` static CImageList imgList; imgList.Create(48,48,ILC_COLOR32,1,1); imgList.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME)); m_List.SetImageList(&imgList,LVSIL_NORMAL); m_List.InsertItem(0,_T("1th Test item")); ``` 而对应的调试结果如下图: ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556200421_754870.png) 第二段代码是无法显示bmp图片的: ``` static CImageList imgList; imgList.Create(40,48,ILC_COLOR24,1,1); imgList.Add(AfxGetApp()->LoadIcon(IDB_BITMAP1)); m_List.SetImageList(&imgList,LVSIL_NORMAL); m_List.InsertItem(0,_T("1th Test item")); ``` 由下面的截图可以看到对应的图片ID(就是IDB_BITMAP1)没有错误: ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556200597_953179.png) 此时调试结果如下: ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556200674_66794.png) 奇怪的是楼主刚开始以为是图片大小的问题,但把imgList.Create(40,48,ILC_COLOR24,1,1);中的前两个参数调大之后仍显示空白 这我就不明白问题出在哪里了,希望路过看到的seniors指点一下,不胜感激!!!

如何在显示某个对话框之前,改变其上控件的参数,然后再显示之?

自定义了两个对话框 一个是LoguserDlg,另一个是LoginDlg 我想在LoginDlg里根据输入的ID号查询数据库,然后想根据查询获得的结果,改变LoguserDlg里静态控件的值,然后再显示LoguserDlg,但是以下代码一直不成功。。 MFC新手,还请指点迷津。 //gotgender,gotname是查询得到的用户信息,LoginID是输入的ID CLoguserDlg dlg; dlg.SetID(LoginID); dlg.SetStaInfo(gotgender,gotname); dlg.DoModal(); SetStaInfo的定义 void CLoguserDlg::SetStaInfo(CString& gender, CString& name) { m_gender.SetWindowTextW(gender); m_name.SetWindowTextW(gender); }//m_gender和m_name是LoguserDlg中两个Static box控件的Control型变量 SetID的定义 void CLoguserDlg::SetID(CString& UserID) { LogID = UserID; }//logID是LoguserDlg内部CString变量

关于MFC中使用TeeChart控件!

1,在控件上面画FastLine,如何实现鼠标移动点击某一个点,控件上面显示一个文本标签,其中内容可以自定义! 2,同是FastLine,如何实现可以用鼠标在控件上面拖动,可以选中一个矩形范围,并获取范围内的线段的值范围? 需要有详细的思路,最好有相关代码参考!使用VS2010开发!

MFC创建多线程问题,实现自定义创建线程的数目

编辑框控件添加了UINT类型的变量m_num 按钮控件代码如下: ``` void CProcessDlg::OnBnClickedButton7() { for(int i=0;i<m_num;i++) { HANDLE hThread; DWORD dwThreadId; CreateThread(NULL, NULL, ThreadProc, (LPVOID)i, 0, &dwThreadId); } } ``` i<3还成功了来着,为什么换成m_num就没反应了哇? 另外,想知道用上面方法创建的线程怎么关闭呢 求教!

MFC文本编辑框背景设置透明,却变成了黑色背景,有没有MFC高手知道怎么破?

做了一个MFC的Demo,目标是实现静态文本和编辑框的背景透明,思路是自定义继承自CStatic和CEdit的类,并重写其CtlColor函数来控制它的背景色,关键代码如下: HBRUSH CEditTrans::CtlColor(CDC* pDC, UINT nCtlColor) { m_Brush.CreateStockObject(HOLLOW_BRUSH); pDC->SetBkMode(TRANSPARENT); return (HBRUSH)m_Brush; } 结果发现同样用这种方法,静态文本的背景能实现透明,编辑框背景仍然是白色,鼠标移动到编辑框上面,编辑框变成了黑色。效果图如下: 静态文本: ![图片说明](https://img-ask.csdn.net/upload/201708/14/1502675764_62768.png) 编辑框: ![图片说明](https://img-ask.csdn.net/upload/201708/14/1502675838_377270.png) 鼠标悬停后: ![图片说明](https://img-ask.csdn.net/upload/201708/14/1502675894_830003.png) 有没有MFC老司机知道这个怎么解决?

使用C++制作一个类似tab control的控件可以动态添加tab页。

制作一个类似TabControl的控件,只要制作tab页表头,可以动态添加tab页,并且所有tab页相应点击事件,能发送切换tab消息,支持tab删除,tab页添加背景图片,响应鼠标指向事件,tab页上有个×支持关闭,tab头上只放五个tab页,同个左右按钮切换tab头上的tab。 这个类似于vs上的tab页,各位大神有思路么,提醒一下,或者有类似代码么?

MFC 请教: 如何在父窗口的按钮处理tab控件中一个对话框的Ctrllist控件的成员变量

![图片说明](https://img-ask.csdn.net/upload/201610/15/1476533242_786260.png) 如图,据说要自定义消息.或者绑定字符串变量,我就是想点击结束进程然后子对话框响应我的buttonclick消息。求表哥的代码实现

VC/MFC 单文档工程,如何动态创建CFormView并显示出来?

大家好。我问这个问题,是经过独立思考的。想通过好心人回答,彻底解决。 我有个基于单文档的程序,我想在菜单响应函数中,动态去创建CFormView并显示。 1我添加了继承CFormView的自定义类,并把无框的对话框资源,在CFormView构造函数中传递了IDD_资源进去。 2 在菜单响应函数中,我写了如下代码,去创建CFormView: CCreateContext context; context.m_pNewViewClass=RUNTIME_CLASS(CFormView的继承类); 问题是,上面这两行代码,动态创建了CFormView了么?如果要想把CFormView的无框界面显示出来,接下来需要写那几行代码?ShowWindow呢?还是update? 请前辈帮我想分析分析,哪几行代码是创建,而且要显示,怎么接下来去写?

关于MFC绘制平滑曲线的问题

各位高手好!现在我有随时间变化的一组数据,采样周期为Ts,如何在MFC中画出这个图像?恳请哪位老师指点迷津,万分感谢!我在网上也找了许久,High-speed Charting Control,TeeChart,自定义图谱控件,cbrush,cpen······可代码量都挺大的,我刚接触MFC,学了一点C++(基本的功能会用),对于网上那些代码根本看不懂啊,照着上面做了一次,结果编译一直有问题,对代码的不理解让我发现不了错误在哪。不知道老师们可不可以推荐一种比较容易理解的方法?我用的是VS2012,跪谢!

如何将VC++ FormView 界面中的编辑框内的数据显示到另一MFC对话框的List表格中去

我在MFC对话框中通过按钮显示数据ok,但在FormView中使用相同代码时却无法将编辑框中数据显示到对话框的List中去,请高人指教,谢谢! void CXianWeiFormView::OnBnClickedPring() { // TODO: 在此添加控件通知处理程序代码 CAddXianDanDlg Dlg; UpdateData(); CString strIncount; Dlg.m_ctrList.InsertItem(0, Si_Name); Dlg.m_ctrList.SetItemText(0, 1, Si_Pi); strIncount.Format("%d", m_count1); Dlg.m_ctrList.SetItemText(0, 2, Si_Si); Dlg.m_ctrList.SetItemText(0, 3, Si_Al); UpdateData(FALSE); Dlg.DoModal(); }

VS2010 MFC 类向导、添加类、添加变量没反应

很久前下载了VS2010,近期开始学习MFC,但是新建项目后总是弹出![图片说明](https://img-ask.csdn.net/upload/201909/17/1568708560_181572.jpg)这个对话框让安装SQL server compact3.5.. 在对话框右击添加类、添加变量都没反应 点击类向导时说 未能打开解决方案的源代码数据库 ![图片说明](https://img-ask.csdn.net/upload/201909/17/1568708744_556940.jpg) 求教各位这该怎么解决啊!!(近期刚下载SQL server)

MFC弹出子对话框不能操作

创建了两个对话框,一个主对话框,一个子对话框 主对话框中设置一个按钮弹出子对话框 void C数据传递Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 b blg; INT_PTR nRt; UpdateData(TRUE); blg.c=a; nRt=blg.DoModal(); } 但是弹出后不能操作子对话框,也不能关闭![图片说明](https://img-ask.csdn.net/upload/201712/16/1513420940_499846.png)

mfc里StretchDIBits函数的使用

我已经获取了RGB的数组outdata,outdata作为参数传进这个显示的函数里,这个函数要完成在静态文本框中显示图片的功能,代码如下: void CRemoteCtrlDlg::PickDisplay(unsigned char *outdata) { CBitmap bitmap,*oldmap; CWnd * CShow= GetDlgItem(IDC_STATIC); CClientDC dc(CShow); CRect rshow; CShow->GetClientRect(&rshow); BITMAPINFO m_pBMI1;//自定义的BMP文件信息结构,用于后面的图像显示 m_pBMI1.bmiHeader.biBitCount=32; m_pBMI1.bmiHeader.biClrImportant=0; m_pBMI1.bmiHeader.biClrUsed=0; m_pBMI1.bmiHeader.biCompression=BI_RGB; //图片数据压缩格式BI_RGB为RGB数据 m_pBMI1.bmiHeader.biHeight=mapheight; m_pBMI1.bmiHeader.biPlanes=1; m_pBMI1.bmiHeader.biSize=sizeof(m_pBMI1.bmiHeader);//结构体所需的字节数 m_pBMI1.bmiHeader.biSizeImage=0; m_pBMI1.bmiHeader.biWidth=mapwidth; m_pBMI1.bmiHeader.biXPelsPerMeter=0; m_pBMI1.bmiHeader.biYPelsPerMeter=0; CDC MemDc; MemDc.CreateCompatibleDC(&dc); bitmap.CreateCompatibleBitmap(&dc,mapwidth,mapheight); oldmap=MemDc.SelectObject(&bitmap); SetStretchBltMode(MemDc.m_hDC,STRETCH_HALFTONE); ::StretchDIBits(MemDc.m_hDC,0,0,rshow.Width(),rshow.Height(),0,0,mapwidth, mapheight,outdata,&m_pBMI1,DIB_RGB_COLORS,SRCCOPY); ::StretchBlt(dc.m_hDC,0,0,rshow.Width(),rshow.Height(),MemDc.m_hDC, 0,0,mapwidth,mapheight,SRCCOPY); } mapwidth和mapheight分别代表了这个图片的实际宽和长但是画完之后竟然是个黑屏,然后我改了m_pBMI1.bmiHeader.biBitCount的参数,设置为8,能出图了但是图颜色基本失真,而其发现图片并没有完全充满整个静态文本框,大小不对,求大神指点下,StretchDIBits这部分是从别人那里copy的是不是这里不对啊?

C++对话框添加的button点击无反应

在基于对话框的MFC程序里,添加了一个BUTTON,并为其添加消息响应函数,但是点击button无反应,调试下总是进不去该函数(并未提示断点打不进去),倒是会提示win32线程退出,另外,在添加此button之前添加的button是能响应的,我的这个对话框上控件比较多,一个对话框上最多添加255个控件,我也没数我的对话框上一共有多少个,太多~,但是既然能添加上去控件,那是不是说明也没有超过255

求助!MFC 单文档多视图 CEditView加载的背景图片被挡住的问题

貌似是加载的背景图片被输入的那一行的背景覆盖了。。 ![图片说明](https://img-ask.csdn.net/upload/201602/21/1456043684_585040.png) ![图片说明](https://img-ask.csdn.net/upload/201602/21/1456044114_59817.png) 如图,其中圈起来的就是CEditView,视图底部还能看见背景图片的一部分,但光标所在的那一行就没有图片的显示了,而且我如果按了回车换行,下面一行也会被覆盖。。以下代码。 ``` 视图类中相关变量: CEdit* m_pCtrlREdit;// 内嵌的CEditCtrl控件指针 CImage m_ImageLogo; // 图片 UINT widthPic, heightPic; // 图片的长宽 COLORREF cl; // 指定图片的透明色 void EditView::OnInitialUpdate() { //CEditView::OnInitialUpdate(); m_editFont.CreatePointFont(168, "宋体"); //设置字体 SetFont(&m_editFont); m_pCtrlREdit = &GetEditCtrl(); ASSERT_VALID(m_pCtrlREdit); LONG lStyle = GetWindowLong(m_pCtrlREdit->m_hWnd, GWL_EXSTYLE); // 保存CEditCtrl的窗口风格 lStyle |= WS_EX_TRANSPARENT; // CEditCtrl的窗口风格加入透明背景 SetWindowLong(m_pCtrlREdit->m_hWnd, GWL_EXSTYLE, lStyle); // 重设CEditCtrl的新窗口风格 m_ImageLogo.Load((CString)"H:\\2016寒假作业\\Test\\Test\\res\\titleBk.png"); if (m_ImageLogo.IsNull()) { CString szTemp; szTemp.Format(_T("错误!找不到%s!"), (CString)"H:\\2016寒假作业\\Test\\Test\\res\\titleBk.png"); MessageBox(szTemp); } else { widthPic = m_ImageLogo.GetWidth(); // 获取图片宽度 heightPic = m_ImageLogo.GetHeight(); // 获取图片高度 cl = RGB(255, 255, 255); // 指定透明色 } CString str = "H:\\2016寒假作业\\Test\\txt\\默认标题.txt"; ReadTitle(str); } BOOL EditView::OnEraseBkgnd(CDC* pDC) { CRect rect; GetClientRect(&rect); pDC->FillSolidRect(&rect, pDC->GetBkColor()); // 用原背景色刷一下背景,否则会把程序后面的统统看见,一团乱麻。此处可以pDC->GetBkColor()将替换自定义的颜色,如白色RGB(255,255,255) if (m_ImageLogo) { m_ImageLogo.TransparentBlt(pDC->m_hDC, 0 , 0, rect.Width(), rect.Height(), 0, 0, widthPic, heightPic, cl); // 帖图到CRichEditView中作为背景 } return FALSE; // 通知窗口不用重绘背景了,我们已经填充过了。 //return CEditView::OnEraseBkgnd(pDC); } ``` 还处在MFC的入门阶段,希望各位达人耐心讲解一下,感谢!

win32编程中窗口不显示是什么问题

《windows程序设计》第9章ENVIRON程序 把光盘中的源代码粘贴出来发现还是没有窗口在运行,实在想不明白 (运行环境:VS2013,WINDOWS7) 以下源代码: #include <windows.h> #define ID_LIST 1 #define ID_TEXT 2 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT ("Environ") ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindow (szAppName, TEXT ("Environment List Box"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } void FillListBox (HWND hwndList) { int iLength ; TCHAR * pVarBlock, * pVarBeg, * pVarEnd, * pVarName ; pVarBlock = GetEnvironmentStrings () ; // Get pointer to environment block while (*pVarBlock) { if (*pVarBlock != '=') // Skip variable names beginning with '=' { pVarBeg = pVarBlock ; // Beginning of variable name while (*pVarBlock++ != '=') ; // Scan until '=' pVarEnd = pVarBlock - 1 ; // Points to '=' sign iLength = pVarEnd - pVarBeg ; // Length of variable name // Allocate memory for the variable name and terminating // zero. Copy the variable name and append a zero. pVarName = calloc (iLength + 1, sizeof (TCHAR)) ; CopyMemory (pVarName, pVarBeg, iLength * sizeof (TCHAR)) ; pVarName[iLength] = '\0' ; // Put the variable name in the list box and free memory. SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM) pVarName) ; free (pVarName) ; } while (*pVarBlock++ != '\0') ; // Scan until terminating zero } FreeEnvironmentStrings (pVarBlock) ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hwndList, hwndText ; int iIndex, iLength, cxChar, cyChar ; TCHAR * pVarName, * pVarValue ; switch (message) { case WM_CREATE : cxChar = LOWORD (GetDialogBaseUnits ()) ; cyChar = HIWORD (GetDialogBaseUnits ()) ; // Create listbox and static text windows. hwndList = CreateWindow (TEXT ("listbox"), NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD, cxChar, cyChar * 3, cxChar * 16 + GetSystemMetrics (SM_CXVSCROLL), cyChar * 5, hwnd, (HMENU) ID_LIST, (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL) ; hwndText = CreateWindow (TEXT ("static"), NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, cxChar, cyChar, GetSystemMetrics (SM_CXSCREEN), cyChar, hwnd, (HMENU) ID_TEXT, (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL) ; FillListBox (hwndList) ; return 0 ; case WM_SETFOCUS : SetFocus (hwndList) ; return 0 ; case WM_COMMAND : if (LOWORD (wParam) == ID_LIST && HIWORD (wParam) == LBN_SELCHANGE) { // Get current selection. iIndex = SendMessage (hwndList, LB_GETCURSEL, 0, 0) ; iLength = SendMessage (hwndList, LB_GETTEXTLEN, iIndex, 0) + 1 ; pVarName = calloc (iLength, sizeof (TCHAR)) ; SendMessage (hwndList, LB_GETTEXT, iIndex, (LPARAM) pVarName) ; // Get environment string. iLength = GetEnvironmentVariable (pVarName, NULL, 0) ; pVarValue = calloc (iLength, sizeof (TCHAR)) ; GetEnvironmentVariable (pVarName, pVarValue, iLength) ; // Show it in window. SetWindowText (hwndText, pVarValue) ; free (pVarName) ; free (pVarValue) ; } return 0 ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } 运行时没有显示错误 ![图片说明](https://img-ask.csdn.net/upload/201505/27/1432710555_149942.jpg)

OpenGL在64位计算机上无法以bmp方式拷贝绘制的图形?

大家好, 本人项目中采用VS2013+OpenGL绘图并对图形进行拷贝,测试程序为一个基于对话框的工程,在主对话框中有一个自定义控件用于绘图,该控件旁边有一个按钮控件Copy,其响应函数OnBnClickedButtonCopy()中对自定义控件中的图形做拷贝。 自定义控件CGraphCtrl中的OnPaint函数如下: void CGraphCtrl::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 //MFC绘图 CRect rc; GetClientRect(&rc); dc.MoveTo(0, 0); dc.LineTo(rc.right, rc.bottom); dc.MoveTo(rc.right, 0); dc.LineTo(0, rc.bottom); //OpenGL绘图 wglMakeCurrent(m_hDC, m_hRC); DrawGraph(); SwapBuffers(m_hDC); wglMakeCurrent(m_hDC, NULL); } 主对话框按钮控件Copy的响应函数如下: void CUsingGlut32Dlg::OnBnClickedButtonCopy() { //m_GraphCtrl.WriteBmpToFile(hBitmap, _T("WriteBmpToFile.bmp")); HBITMAP hBitmap = m_GraphCtrl.GetBmpHandle(); m_GraphCtrl.CopyBmpToClipBoard(hBitmap); } 下面为该程序在win10 64位机器上的运行效果和点击按钮Copy后剪贴板中的内容: ![图片说明](https://img-ask.csdn.net/upload/201605/27/1464314555_824925.png) ![图片说明](https://img-ask.csdn.net/upload/201605/27/1464314572_576558.png) 该程序在win7 32位机器上运行正常,即点击Copy后剪贴板中的内容与界面显示的相同。 上述问题很让人难以理解,程序在64位计算机上运行时,DC所绘内容在哪儿?RC所绘内容与DC不在同一个缓存里?希望那位老师或大侠能给出解释和解决方案。非常感谢!

mfc通过ado连接access 老是无效指针,求高手指点

// Snake.cpp : 定义应用程序的类行为。 // #include "stdafx.h" #include "afxwinappex.h" #include "afxdialogex.h" #include "Snake.h" #include "MainFrm.h" #include "winsock2.h" #include "SnakeDoc.h" #include "SnakeView.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CSnakeApp BEGIN_MESSAGE_MAP(CSnakeApp, CWinAppEx) ON_COMMAND(ID_APP_ABOUT, &CSnakeApp::OnAppAbout) // 基于文件的标准文档命令 ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew) ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen) END_MESSAGE_MAP() // CSnakeApp 构造 CSnakeApp::CSnakeApp() { m_bHiColorIcons = TRUE; // 支持重新启动管理器 m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS; #ifdef _MANAGED // 如果应用程序是利用公共语言运行时支持(/clr)构建的,则: // 1) 必须有此附加设置,“重新启动管理器”支持才能正常工作。 // 2) 在您的项目中,您必须按照生成顺序向 System.Windows.Forms 添加引用。 System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException); #endif // TODO: 将以下应用程序 ID 字符串替换为唯一的 ID 字符串;建议的字符串格式 //为 CompanyName.ProductName.SubProduct.VersionInformation SetAppID(_T("Snake.AppID.NoVersion")); // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance 中 } // 唯一的一个 CSnakeApp 对象 CSnakeApp theApp; // CSnakeApp 初始化 BOOL CSnakeApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); AfxEnableControlContainer(); AfxOleInit(); m_pConnection.CreateInstance(__uuidof(Connection)); // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息, // 因为它有时会经常出现一些想不到的错误。 try { // 打开本地Access库Demo.mdb m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.accdb", "", "", adModeUnknown); } catch (_com_error& e) { //调用在CAdoRWAccessDlg中打印错误信息的静态函数 //CAboutDlg::dump_com_error(e); return FALSE; } // 初始化 OLE 库 /*if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; }*/ AfxEnableControlContainer(); EnableTaskbarInteraction(FALSE); // 使用 RichEdit 控件需要 AfxInitRichEdit2() // AfxInitRichEdit2(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, SetRegistryKey(_T("应用程序向导生成的本地应用程序")); LoadStdProfileSettings(4); // 加载标准 INI 文件选项(包括 MRU) InitContextMenuManager(); InitKeyboardManager(); InitTooltipManager(); CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CSnakeDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CSnakeView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 分析标准 shell 命令、DDE、打开文件操作的命令行 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 调度在命令行中指定的命令。如果 // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->MoveWindow(0,0,645,645,1); m_pMainWnd->CenterWindow(); m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // 仅当具有后缀时才调用 DragAcceptFiles // 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生 return TRUE; } int CSnakeApp::ExitInstance() { //TODO: 处理可能已添加的附加资源 AfxOleTerm(FALSE); return CWinAppEx::ExitInstance(); } // CSnakeApp 消息处理程序 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; public: void dump_com_error(_com_error &e); _RecordsetPtr m_pRecordset; //_RecordsetPtr m_pRecordset1; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedButton1(); CListBox m_AccessList; }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, m_AccessList); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTON1, &CAboutDlg::OnBnClickedButton1) END_MESSAGE_MAP() // 用于运行对话框的应用程序命令 void CSnakeApp::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } void CAboutDlg::dump_com_error(_com_error &e) { CString ErrorStr; _bstr_t bstrSource(e.Source()); _bstr_t bstrDescription(e.Description()); ErrorStr.Format(L"\n\tADO Error\n\tCode = %08lx\n\tCode meaning = %s\n\tSource = %s\n\tDescription = %s\n\n", e.Error(), e.ErrorMessage(), (LPCTSTR)bstrSource, (LPCTSTR)bstrDescription); //在调试窗口中打印错误信息,在Release版中可用DBGView查看错误信息 ::OutputDebugString((LPCTSTR)ErrorStr); #ifdef _DEBUG AfxMessageBox(ErrorStr, MB_OK | MB_ICONERROR); #endif } void CAboutDlg::OnBnClickedButton1() { _variant_t var; CString strName, strAge; m_AccessList.ResetContent(); strName = strAge = ""; try { if (!m_pRecordset->BOF) m_pRecordset->MoveFirst(); else { AfxMessageBox(L"表内数据为空"); return; } while (!m_pRecordset->adoEOF) { var = m_pRecordset->GetCollect("time"); if (var.vt != VT_NULL) strName = (LPCSTR)_bstr_t(var); var = m_pRecordset->GetCollect("score"); if (var.vt != VT_NULL) strAge = (LPCSTR)_bstr_t(var); m_AccessList.AddString(strName + " --> " + strAge); m_pRecordset->MoveNext(); } m_AccessList.SetCurSel(0); } catch (_com_error& e) { dump_com_error(e); } } // CSnakeApp 自定义加载/保存方法 void CSnakeApp::PreLoadState() { BOOL bNameValid; CString strName; bNameValid = strName.LoadString(IDS_EDIT_MENU); ASSERT(bNameValid); GetContextMenuManager()->AddMenu(strName, IDR_POPUP_EDIT); } void CSnakeApp::LoadCustomState() { } void CSnakeApp::SaveCustomState() { } // CSnakeApp 消息处理程序

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

一文带你入门Java Stream流,太强了

两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为...

立即提问
相关内容推荐