Win32 通過多執行緒自動關閉對話方塊的方法

2022-01-11 23:30:16 字數 3931 閱讀 7397

#include int winapi winmain (hinstance hinstance, hinstance hprevinstance, pstr szcmdline, int icmdshow) 

#include int winapi winmain (hinstance hinstance, hinstance hprevinstance, pstr szcmdline, int icmdshow) 

return 0;

}

#include // 執行緒的執行函式

dword winapi closedialog(lpvoid param)

int winapi winmain (hinstance hinstance, hinstance hprevinstance, pstr szcmdline, int icmdshow)

return 0;

}

#include static tchar title = text ("彈窗1");

// 執行緒的執行函式

dword winapi closedialog(lpvoid param)

exitthread(0);

return 0;

}int winapi winmain (hinstance hinstance, hinstance hprevinstance, pstr szcmdline, int icmdshow)

return 0;

}

下面的內容收集自網際網路。

產生乙個執行緒(並因而成就乙個多執行緒程式),是以createthread()作為一切行動的開始。

handle createthread(

lpsecurity_attributes lpthreadattributes,

size_t dwstacksize,

lpthread_start_routine lpstartaddress,

lpvoid lpparameter,

dword dwcreationflags,

lpdword lpthreadid

);

lpthreadattributes:描述施行於這一新執行緒的security屬性。null表示使用預設值。

dwstatcksize : 新執行緒擁有自幾的堆疊,0表示使用預設大小。

lpparameter:此值將被傳送到上述所指定的新執行緒函式去,作為引數(唯一的引數)。

dwcreationflags:允許你產生乙個暫時掛起的執行緒,預設情況是「立即開始執行」。

lpthreadid :新執行緒的id會被傳回到這裡。

如果createthread()成功,傳回乙個handle,代表新執行緒,否則傳回乙個false。如果失敗,你可以呼叫getlasterror()獲知原因。

彈出乙個對話方塊。

int messagebox(          

hwnd hwnd,

lpctstr lptext,

lpctstr lpcaption,

uint utype

);

hwnd

處理要建立的訊息框的所有者視窗。如果該引數為空,則訊息框沒有所有者視窗。

lptext

指向乙個包含要顯示的訊息的null終止字串的指標

lpcaption

指向乙個包含對話方塊標題的空終止字串的指標。如果該引數為空,則使用預設的標題error。

utype

指定對話方塊的內容和行為。這個引數可以是來自以下幾組標誌的組合。要指出在訊息框中顯示的按鈕。

mb_ok

預設值。有乙個確認按鈕在裡面。

mb_yesno

有是和否在裡面。

mb_abortretryignore

有abort(放棄),retry(重試)和ignore(跳過)

mb_yesnocancel

訊息框含有三個按鈕:yes,no和cancel

mb_retrycancel

有retry(重試)和cancel(取消)

mb_okcancel

訊息框含有兩個按鈕:ok和cancel

x 錯誤 mb_iconhand、mb_iconstop、mb_iconerror

? 詢問 mb_iconquestion

! 警告 mb_iconexclamation、mb_iconwarning

i 資訊 mb_iconasterisk、mb_iconinformation

上面這些東西在msdn可以看到。

如果乙個訊息框有乙個取消按鈕,那麼如果按下esc鍵或者取消了取消按鈕,函式將返回idcancel值。

如果訊息框沒有取消按鈕,按esc鍵就沒有效果。

如果函式失敗,則返回值為0。

如果函式成功,則返回值是下列選單項的值之一。

idabort abort按鈕被選中。

idcancel cancel按鈕被選中。

idcontinue continue按鈕被選中。

idignor eignore按鈕被選中。

idno no按鈕被選中。

idok ok按鈕被選中。

idretry retry按鈕被選中。

idyes yes按鈕被選中。

在視窗列表中尋找與指定條件相符的第乙個子視窗 。

該函式獲得乙個視窗的控制代碼,該視窗的類名和視窗名與給定的字串相匹配。這個函式查詢子視窗,從排在給定的子視窗後面的下乙個子視窗開始。在查詢時不區分大小寫。

hwnd findwindowex(

hwnd hwndparent,

hwnd hwndchildafter,

lpctstr lpszclass,

lpctstr lpszwindow

);

hwndparent:要查詢的子視窗所在的父視窗的控制代碼(如果設定了hwndparent,則表示從這個hwndparent指向的父視窗中搜尋子視窗)。

如果hwndparent為 0 ,則函式以桌面視窗為父視窗,查詢桌面視窗的所有子視窗。

windows nt5.0 and later:如果hwndparent是hwnd_message,函式僅查詢所有訊息視窗。

hwndchildafter :子視窗控制代碼。查詢從在z序中的下乙個子視窗開始。子視窗必須為hwndparent視窗的直接子視窗而非後代視窗。如果hwndchildafter為null,查詢從hwndparent的第乙個子視窗開始。如果hwndparent 和 hwndchildafter同時為null,則函式查詢所有的頂層視窗及訊息視窗。

lpszclass:指向乙個指定了類名的空結束字串,或乙個標識類名字串的成員的指標。如果該引數為乙個成員,則它必須為前次呼叫theglobaiaddatom函式產生的全域性成員。該成員為16位,必須位於lpclassname的低16位,高位必須為0。

lpszwindow:指向乙個指定了視窗名(視窗標題)的空結束字串。如果該引數為 null,則為所有視窗全匹配。

long,找到的視窗的控制代碼。如未找到相符視窗,則返回零。會設定getlasterror

如果函式成功,返回值為具有指定類名和視窗名的視窗控制代碼。如果函式失敗,返回值為null。

若想獲得更多錯誤資訊,請呼叫getlasterror函式。

該函式清除乙個模態對話方塊,並使系統中止對對話方塊的任何處理。

bool enddialog(hwnd hdlg,int nresult);
hdlg:表示要被清除的對話方塊視窗。

nresult:指定從建立對話方塊函式返回到應用程式的值。

如果函式呼叫成功,則返回值為非零值;如果函式呼叫失敗則返回值為零。若想獲得錯誤資訊請呼叫getlasterror函式。

Win32 通過多執行緒自動關閉對話方塊的方法

include int winapi winmain hinstance hinstance,hinstance hprevinstance,pstr szcmdline,int icmdshow include int winapi winmain hinstance hinstance,hins...

WIN32多執行緒

win32多執行緒學習 1.執行緒建立 handle createthread lpsecurity attributes lpthreadattributes,dword dwstacksize,lpthread start routine lpstartaddress,lpvoid lppara...

Win32建立多執行緒

win32建立多執行緒,貼下 define win32 lean and mean include include include include include include include include include define max threads 3 dword winapi pr...