主頁 > 後端開發 > 管理博文 做Windows高級工程師,需要知道MFC控制元件大全(完整版)

管理博文 做Windows高級工程師,需要知道MFC控制元件大全(完整版)

2020-12-20 06:06:12 後端開發

MFC控制元件:

Windows標準控制元件:

windows標準控制元件由Windows 作業系統提供,在Windows 95中還提供了一些新增的控制元件,所有這些控制元件物件都是可編程的,我們可以使用Visual C++提供的對話框編輯器把它們添加到對話框中,Microsoft基礎類別庫(MFC)提供了封裝這些控制元件的類,它們列于表6.1,

在MFC 中,類CWnd是所有視窗類的基類,很自然的,它也是所控制元件類的基類,

Windows標準控制元件在以下環境下提供:

windows 95

Windows NT 3.51及以后版本

win32s 1.3

注意:visual C++4.2及以后版本不再支持Win32s.

MFC基本常用控制元件基本用法

VC++控制元件工具箱:

按鈕(Button)

用來接收用戶的命令,應用程式在接收到用戶命令后,通常需要進行一些后臺作業,按鈕可以回應單擊或雙擊動作,在按鈕接收到滑鼠動作后,向其父視窗發送相應的控制元件通知,用戶可以對這些控制元件通知進行訊息映射,從而進行相應的處理,

在一個對話框中,可以定義一個默認按鈕,這只要選中按鈕屬性中的“Default”選項,如果在對話框活動的時候按下了Enter鍵,則等同于單擊了默認按鈕,MFC提供了CButton類支持按鈕控制元件,

復選框(Check Box)

用來顯示某種可能的選擇,該項選擇是獨立的,用戶可以選中或取消該選項,在選項被選中的時候核選標記出現,選項被取消時核選標記消失,MFC中由CButton類對核選框進行支持,用戶可以通過SetCheck()函式和GetCheck()函式設定或獲取核選框當前的狀態

BST_UNCHECKED==((CButton*)GetDlgItem(IDC_CHECK_RES1))->GetCheck()
((CButton*)GetDlgItem(IDC_CHECK_RES1))->SetCheck(true);		

編輯框(Edit Control)

用來接收用戶輸入的字串通過選擇編輯框的選項,編輯框可以接收字串、數字、密碼等;編輯框還可以設定成接收多行字串的模式;可以自動進行大小寫轉換,編輯框可能向父視窗發送多種控制元件通知,如果用戶需要,可以對這些控制元件通知進行處理,MFC提供了CEdit類支持編輯框控制元件

GetDlgItem(IDC_***)->SetWindowText(Cstring);
 
GetDlgItem(IDC_***)->GetWindowText(Cstring);

組合框(Combo Box)

串列框和編輯框的組合,用戶除了可以在串列中對已經存在的選項進行選擇外,還可以輸入新的選擇,MFC提供了CComboBox類對組合框控制元件進行支持,

CComboBox * AAA = (CComboBox*)(GetDlgItem(IDC_***));
 
AAA->AddString(_T("***"));
 
AAA->SelectString(0, _T("***"));
 
AAA->SetCurSel(0);
 
 
int nSel = AAA->GetCurSel();
 
AAA->GetLBText(nSel, Cstring);
 
if(strType.Trim() == _T("***"))

串列框(List Box)

用來選擇一系列的可能選擇,用戶通過滾動條可以在這些選擇中瀏覽,在串列框中,可以進行單項選擇,也可以進行多項選擇,這取決于用戶在控制元件屬性對話框中的設定,MFC提供了CListBox類對串列框控制元件進行支持,

組成框(Group Box)

用來包圍具有邏輯關系的一組控制元件,在這些控制元件的周圍加上邊界和標題,需注意的是,組成框僅僅是在視覺效果上對控制元件進行“成組”,真正的“成組”作業還需要另外一些作業,僅僅在視覺上展現出一組的邏輯關系,并不添加任何代碼

單選按鈕(Radio Button)

用來選擇某種可能的選擇,與 (Check Box)復選框不同,該選項不是獨立的

一般是幾個單選按鈕組成一組同組中的單選按鈕僅有一個按鈕被選中

MFC同樣使用CButton類對單選按鈕控制元件進行支持

SetCheck()函式和GetCheck()函式對單選按鈕也是適用的,

靜態文本(Static Text)

用來在指定的位置顯示特定的字串一般用來標識附近另一個控制元件的內容,顯示在靜態文本控制元件中的字串一般不再改變,但是在需要的時候,必須為其指定一個不同食物ID號,通過呼叫相應的函式來進行設定,MFC提供了CStatic類支持靜態控制元件

圖形控制元件(Picture Control)

顯示位圖(Bitmap)和圖示(Icon),圖形繪制與顯示,主要是其方形的區域適合顯示,同樣方形區域也可利用(Static Text)靜態文本框,

滾動條(Scroll Bar)

這包括水平滾動條和垂直滾動條,除了在視覺效果上的方向不同外,水平滾動條在被滾動時發生WM_HSCROLL訊息,而垂直滾動條在被滾動時發送WM_VSCROLL訊息MFC提供了CScrollBar進行支持

滑塊控制元件(Slider Control)

通常用來在程式中接受一系列離散的數值

用戶可以設定滑塊控制元件的取值范圍,并可以為控制元件加上刻度標記以顯示特定位置的含義,

MFC提供了CSliderCtrl類進行支持

微調按鈕(Spin Button)

包括一對緊靠在一起的上下箭頭,使用微調按鈕可以增大或者縮小某個特定的數值,

微調按鈕往往都需要一個“伙伴”控制元件,這通常都是一個編輯框

當微調按鈕的向上箭頭被單擊時,編輯框中的數字就增大;反之則減小MFC提供了CPinButtonCtrl類進行支持

進度條(Progress Control)

進行一項需要較長時間的操作時來反應當前的進度

當操作的進度不斷前進時,進度條就用特色顏色填充進度條框,用戶可以設定進度條的范圍和當前位置,

MFC提供了CProgressCtrl類進行支持

CProgressCtrl* progressbar = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_1);
 
progressbar->SetRange(0, 4);
 
progressbar->SetPos(0);

熱鍵控制(Hot Key)

熱鍵控制元件看起來就像一個編輯框,但是在熱鍵控制元件中能夠立刻反應用戶剛剛按下的鍵組合,這在設定程式的熱鍵時特別有用,

熱鍵控制元件只是在“視覺”上顯示了按鍵組合,設定熱鍵的作業還需要用戶添加代碼完成,

MFC提供了CHotKey類進行支持

串列控制(List Control)

按一定的排列順序顯示一系列帶圖示的字串,

串列控制元件提供了四種顯示模式:大圖示(Icon)、小圖示(Small Icon)、串列(List)和報表(Report)

用戶可以向串列控制元件中添加新的項,也可以控制串列控制元件的顯示模式,

MFC提供了CListCtrl類進行支持

初始化:

 struct INFO { int id; CString time; CString type; }info; CString id; int nRow=0; id.Format(_T("%d"), info.id); m_ListCtrl.InsertItem(nRow,id); m_ListCtrl.SetItemText(nRow, 1, info.time); m_ListCtrl.SetItemText(nRow, 2, info.type); nRow ++;


添加記錄:

 
struct INFO
 
{
 
int id;
 
CString time;
 
CString type;
 
}info;
 
CString id;
 
int nRow=0;
 
id.Format(_T("%d"), info.id);
 
m_ListCtrl.InsertItem(nRow,id);
 
m_ListCtrl.SetItemText(nRow, 1, info.time);
 
m_ListCtrl.SetItemText(nRow, 2, info.type);
 
nRow ++;

樹形控制元件(Tree Control)

顯示一系列專案的層次關系最典型的例子是顯示磁盤上的檔案與檔案夾

如果有子專案的話,單擊樹形控制元件中的專案可以展開或者收縮其子專案

MFC提供了CTreeCtrl類進行支持

初始化

   void CConfigDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); // TODO: 在此處添加訊息處理程式代碼  CRect rcWnd; GetClientRect(&rcWnd);  CRect rcChild = rcWnd; rcChild.top = rcWnd.top+10; rcChild.bottom -=10; rcChild.left += 160; rcChild.right -= 10; CRect laneRect = rcChild;  if(::IsWindow(m_1Dlg)) m_1Dlg.MoveWindow(rcChild);  if(::IsWindow(m_2Dlg)) m_2Dlg.MoveWindow(rcChild);   if ( ::IsWindow( pTree.GetSafeHwnd() ) ) { pTree.MoveWindow(rcWnd.left+10,rcWnd.top+30,130,350,1); } }

樹節點切換

   void CConfigDlg::OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); // TODO: 在此添加控制元件通知處理程式代碼 HTREEITEM hSelected=pNMTreeView->itemNew.hItem; if(hSelected!=NULL) { pTree.SelectItem(hSelected); int nDat = pTree.GetItemData(hSelected);  switch(nDat) { case 1: /*MessageBox(_T("YNAME"));*/ if(m_pPreWnd) m_pPreWnd->ShowWindow(SW_HIDE);  m_1Dlg.ShowWindow(SW_SHOW); m_pPreWnd = &m_1Dlg; break; case 3: /*MessageBox(_T("XNAME"));*/ if(m_pPreWnd) m_pPreWnd->ShowWindow(SW_HIDE);  m_2Dlg.ShowWindow(SW_SHOW); m_pPreWnd = &m_2Dlg; break;  default: break; } } *pResult = 0; }

改變位置

   void CConfigDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); // TODO: 在此處添加訊息處理程式代碼  CRect rcWnd; GetClientRect(&rcWnd);  CRect rcChild = rcWnd; rcChild.top = rcWnd.top+10; rcChild.bottom -=10; rcChild.left += 160; rcChild.right -= 10; CRect laneRect = rcChild;  if(::IsWindow(m_1Dlg)) m_1Dlg.MoveWindow(rcChild);  if(::IsWindow(m_2Dlg)) m_2Dlg.MoveWindow(rcChild);   if ( ::IsWindow( pTree.GetSafeHwnd() ) ) { pTree.MoveWindow(rcWnd.left+10,rcWnd.top+30,130,350,1); } }

屬性表控制元件(Tab Control)

包含大量的控制元件,可以滿足用戶顯示或者獲取大量資料分類顯示的要求,典型例子是Windows任務欄每個程式標簽,

每個屬性表又分為好幾個屬性頁,這些屬性頁由各自的標簽進行區分,這些屬性頁中都可以包容其他控制元件

在顯示屬性表的時候,一次只能夠顯示一個屬性頁的全部內容,同時顯示其他屬性頁的標簽,用戶通過單擊標簽打開相應的屬性頁,

MFC提供了CTabCtrl類進行支持

初始化系結變數

m_tab_Light.DeleteAllItems();
 
m_LightParkingDlg.DestroyWindow();
 
m_LightStatusDlg.DestroyWindow();
 
m_tab_Light.InsertItem(0, _T("0001")); // 插入第一個標簽
 
m_tab_Light.InsertItem(1, _T("0002")); // 插入第二個標簽
 
 
CRect tabRect; // 標簽控制元件客戶區的位置和大小
 
m_tab_Light.GetClientRect(&tabRect); // 獲取標簽控制元件客戶區Rect
 
// 調整tabRect,使其覆寫范圍適合放置標簽頁
 
tabRect.left += 2;
 
tabRect.right -= 1;
 
tabRect.top += 21;
 
tabRect.bottom -= 2;
 
m_LightParkingDlg.Create(IDD_DIALOG_LIGHT_PARKING, &m_tab_Light); // 創建第一個標簽頁
 
m_LightStatusDlg.Create(IDD_DIALOG_LIGHT_STATUS, &m_tab_Light); // 創建第二個標簽頁
 
//m_LightParkingDlg.InitData();
 
m_LightParkingDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(),SWP_SHOWWINDOW);

控制元件頁面切換

 CRect tabRect; // 標簽控制元件客戶區的位置和大小
 
m_tab_Light.GetClientRect(&tabRect); // 獲取標簽控制元件客戶區Rect
 
// 調整tabRect,使其覆寫范圍適合放置標簽頁
 
tabRect.left += 2;
 
tabRect.right -= 1;
 
tabRect.top += 21;
 
tabRect.bottom -= 2;
 
switch (m_tab_Light.GetCurSel())
 
{
 
 
case 0:
 
m_LightStatusDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
 
m_LightParkingDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
 
break;
 
case 1:
 
m_LightParkingDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW);
 
m_LightStatusDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW);
 
break;
 
 
}

影片控制元件(Animation):

用來播放一段AVI格式的視頻剪輯,用戶可以控制視頻剪輯的播放、停止和定位,但也僅限于這些功能,影片控制元件設定不能播放音頻剪輯,如果用戶需要更高層次的視頻或者音頻的支持,請選用MCIWnd控制元件

MFC提供了CAnimateCtrl類對影片控制元件進行支持

高級編輯框(Rich Edit)

編輯控制元件(Edit Control)功能的擴展,在高級編輯框中,除了簡單的輸入和編輯字串外,用戶還可以為字符或段落指定特定的格式,用戶甚至還可以向高級編輯框中插入OLE項

高級編輯框基本上實作了一個帶格式的文本編輯器功能,而只需要用戶添加少量的介面,

MFC提供了CRichEditCtrl類進行支持

日期/時間選擇器(Date Time Picker)

向用戶提供了一種直觀的選擇日期和時間的方法、日期/時間選擇器在外觀上類似于一個組合框,但是當用戶單擊下拉箭頭時就會展開一個日歷控制元件供用戶選擇,而一旦用戶做出了選擇,日期/時間選擇器會自動顯示新的日期/時間,MFC提供了CDateTimeCtrl類進行支持,

SYSTEMTIME times_1; //開始時間日期
 
SYSTEMTIME timee_1; //結束時間日期
 
 
CDateTimeCtrl* dtPickctrs_1 = (CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_START1); //獲取時間控制元件句柄
 
CDateTimeCtrl* dtPickctre_1 = (CDateTimeCtrl*)GetDlgItem(IDC_DATETIMEPICKER_END1);
 
 
memset(×_1,0,sizeof(times_1)); //時鐘初始化
 
memset(&timee_1,0,sizeof(timee_1));
 
 
dtPickctrs_1->GetTime(×_1); //獲取控制元件所選時間,保存至變數
 
dtPickctre_1->GetTime(&timee_1);
 
 
 
CString strTimeStart; //將時間轉換為字串
 
strTimeStart.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), times_1.wYear,times_1.wMonth,times_1.wDay,times_2.wHour,times_2.wMinute,times_2.wSecond);
 
CString strTimeEnd;
 
strTimeEnd.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), timee_1.wYear,timee_1.wMonth,timee_1.wDay,timee_2.wHour,timee_2.wMinute,timee_2.wSecond);
 


獲取系統時間

SYSTEMTIME time;
 
::GetLocalTime(&time);

日歷控制元件(Month Calender)

如下圖,看似與真正的日歷類似,操作也類似,直觀的為用戶提供了觀察和顯示當前日期的途徑,MFC提供了CMonthCalCtrl類進行支持

IP地址控制元件(IP Adress)

IP地址控制元件用來輸入和編輯IP地址MFC提供了CIPAddressCtrl類進行支持

該控制元件外觀類似于一個編輯框,但是可以自動對輸入的字符按3個一組進行區分和加間隔圓點,IP地址控制元件為開發支持Internet技術的程式提供了方便,

 擴展組合框(Extended Combo Box)

在普通組合框(Combo Box)的基礎上還支持影像串列

可以在組合框中顯示特定的圖示表示相應的選擇,而不僅僅是顯示文本,

MFC提供了CComboBoxEx類進行支持

用戶自定義控制元件(Custom Control) 

 控制元件使用的時候,它的Class必須有一個類的支持這個視窗類可以VC的類,例如:Button、Edit.在頭檔案增加一個CEdit類的成員變數:CEdit m_Text(即點擊右鍵添加變數),然后按照Edit控制元件使用即可,

 

 超鏈接控制元件(SysLink Control ):

1.用于在 MFC 應用程式上添加超鏈接,就像html中的超鏈接一樣,你點下可以鏈接到一個網頁上去,拖控制元件到頁面上,并系結一個變數(m_linkCtrl),里面的內容全部是按照標準的html中href的用法寫的,寫錯了自然鏈接不了的,

可以去瞧下html里面的href屬性是怎/么設定的.另外要注意的是字串中雙引號的處理(記得加個轉義符\),添加單擊回應訊息

m_linkCtrl.SetWindowTextW(_T("<a href=https://www.cnblogs.com/"http://blog.csdn.net/miko_xiaoming\">Miko's Note</a>"));
 
PNMLINK pNMLink = (PNMLINK) pNMHDR;
 
ShellExecuteW(NULL, L"open", pNMLink->item.szUrl, NULL, NULL, SW_SHOWNORMAL); //在瀏覽器中打開

2.同按鈕(Button)控制元件一樣,回應相應的訊息                                  

 

多按鈕組合控制元件(Split Button Control )

如下圖,實作多選按鈕選擇功能,使用時添加相應選單

 

 網路IP地址輸入輸出控制元件(Network Address Control):

可以直接作為inet_addr(ip)的輸入,分隔符為逗號(,)

指令按鈕控制元件(command button control)

不僅可以為按鈕添加相應命令還可以對命令做出注解

所有控制元件的公共屬性:

ID:控制元件的資源標識,

Visiable:控制元件是否可見,

Disabled:控制元件是否被禁止、被禁止的控制元件無法接受鍵盤和滑鼠輸入,

Group:是否從這個空間開始一個新組,

Tab stop:在程式中是否可以用【Tab】鍵切換到這個控制元件,

Help ID:是否給控制元件分配一個幫助標識,幫助標識基于控制元件本身的資源標識,

Client edge:給控制元件增加一個凹陷的邊界,使整個控制元件看起來像是凹下去的一樣,

Static edge:給控制元件增加一個邊界,

Modal frame:給控制元件增加一個3維的框架,與Client edge相反,它是凸出來的,

Transparent:擁有此屬性的視窗是透明的,它下面的視窗不會被它遮掩住,

Accept files:擁有此屬性的視窗可以接收拖放檔案,如果一個檔案被拖動到這個控制元件上面,控制元件會收到WM_DROPFILES訊息,

No parent notify:表示控制元件不向其父視窗發送WM_PARENTNOTIFY訊息,

Right aligned text:表示文本右對齊,

以上屬性可通過控制元件的屬性對話框進行設定,在屬性對話框中按【F1】鍵可以查看屬性的幫助資訊,

每一種控件都由一個MFC控制元件類來管理,當通過資源編輯器在對話框上添加一個控制元件時,visualC++會自動為控制元件類生成一個實體,即物件,并呼叫建構式,當對話框關閉時,其各個子控制元件物件被自動銷毀,

也可以不使用資源編輯器,自己在程式中寫代碼創建、顯示控制元件并設定控制元件的屬性,

所有的控制元件類都來自CWnd,控制元件的某些操作和屬性設定需要用到CWnd本身的成員函式,CWnd某些函式經常用來操縱控制元件和設定控制元件屬性,

SetWindowText:設定控制元件上要顯示的標題文本,即用來設定控制元件的caption屬性

GetWindowText:得到控制元件的標題文本

EnableWindow:設定控制元件的Disabled屬性,即社會自控制元件是否可以接收鍵盤和滑鼠的輸入

SetWindowPos:改變視窗的大小、位置和Z軸次序,

MoveWindow:改變視窗的大小和位置

GetWindowRec:得到視窗的大小、位置(資訊存放在一個矩形結構中),

GetClientRect:得到視窗客戶區的大小(資訊存放在一個矩形結構中 )

ShowWindow:設定視窗的可見性(即視窗是否可見)

SetWindowText/GetWindowText還可以用來設定/得到對話框的標題文本,

福利來啦~

學習從來不是一個人的事情,要有個相互監督的伙伴,對于C/C++感興趣可以關注小編在后臺私信我:【編程交流】一起來學習哦!可以領取一些C/C++的專案學習視頻資料哦!

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237405.html

標籤:C++

上一篇:你說C語言垃圾,80%的學校還在給新生上,它們會OUT嗎?

下一篇:C++基礎知識篇:C++ 參考

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more