【发布时间】:2021-08-26 17:39:59
【问题描述】:
当我禁用并重新启用AddControl 中的窗口时,窗口中的WS_BORDER 样式会消失。为什么?包含在“nuova prenotazione”中切换边界的程序的image 的链接
窗口过程中的案例:
case CERCA_UT_RI:
{
MessageBeep(MB_RIGHT);
//mostra varie message box in base all output, se ritorna 1 vuol dire che ha trovato l'utente ricercato
if(Cerca_utM(HricercaMain)==1){
//mettiamo la ricerca nella variabile globale così da passarla alle altre funzioni
GetWindowText(HricercaMain, ricerca, 20);
//Riattiva tutte le finestre
EnableAllWindow(hWnd);
}
}
break;
窗口过程的控件:
void AddControls(HWND hWnd)//dichiariamo la nostra addcontrol e processeremo ovviamente wm_create ove si crea la finestra
{
//-------------------------------------UTENTE----------------------------------------------------------------------------
HWinRicerca = CreateWindowW(L"static",L"Ricerca Utente",WS_VISIBLE | WS_CHILD | WS_BORDER | SS_CENTER|WS_THICKFRAME,350,40,250,135,hWnd,NULL,NULL,NULL);
CreateWindowW(L"static",L"Nome :",WS_VISIBLE | WS_CHILD | WS_BORDER | SS_CENTER,30,35,50,20,HWinRicerca,NULL,NULL,NULL);
HricercaMain = CreateWindowW(L"edit", NULL, WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOVSCROLL,80,35,130,20,HWinRicerca,NULL,NULL,NULL);
CreateWindowW(L"Button",L"Conferma",WS_VISIBLE | WS_CHILD ,435,115,70,40,hWnd,(HMENU)CERCA_UT_RI,NULL,NULL);
//------------------------------------------------------------------------------------------------------------------------
//--------------------------------Prenotazione--------------------------------------------------
hPreMain = CreateWindowW(L"static",L"Nuova Prenotazione",WS_DISABLED |WS_VISIBLE | WS_CHILD | WS_BORDER | SS_CENTER|WS_THICKFRAME,100,225,280,220,hWnd,NULL,NULL,NULL);
hTBid = CreateWindowW(L"static",L"id Rist :",WS_VISIBLE |WS_DISABLED | WS_CHILD | WS_BORDER | SS_CENTER|ES_NUMBER,160,260,60,20,hWnd,NULL,NULL,NULL);
HPreid = CreateWindowW(L"edit", NULL, WS_DISABLED | WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOVSCROLL|ES_NUMBER,220,260,60,20,hWnd,NULL,NULL,NULL);
hTBpre = CreateWindowW(L"static",L"Data Prenotazione :",WS_DISABLED |WS_VISIBLE | WS_CHILD |ES_NUMBER,160,300,130,20,hWnd,NULL,NULL,NULL);
HPreGio = CreateWindowW(L"edit", L"g",WS_DISABLED |WS_CHILD | WS_VISIBLE | ES_NUMBER| WS_BORDER,160,330,30,20,hWnd,NULL,NULL,NULL);
HPreMese = CreateWindowW(L"edit", L"m",WS_DISABLED | WS_BORDER |WS_VISIBLE | WS_CHILD | ES_AUTOVSCROLL|ES_NUMBER,205,330,30,20,hWnd,NULL,NULL,NULL);
HPreAnno = CreateWindowW(L"edit", L"y",WS_DISABLED | WS_VISIBLE | WS_CHILD | ES_AUTOVSCROLL|ES_NUMBER| WS_BORDER,250,330,40,20,hWnd,NULL,NULL,NULL);
hbutton = CreateWindowW(L"Button",L"Conferma",WS_DISABLED |WS_VISIBLE | WS_CHILD,190,380,70,40,hWnd,(HMENU)PRE_NUOVO,NULL,NULL);
//---------------------------------------------------------------------------------------------
//limitiamo il massimo degli input inseribili nelle edit box di giorno/mese
const int maximum_length = 2;
SendMessage(HPreGio, EM_SETLIMITTEXT, maximum_length, 0);
SendMessage(HPreMese, EM_SETLIMITTEXT, maximum_length, 0);
}
以及启用所有窗口程序:
void EnableAllWindow(HWND hWnd)
{
EnableWindow(hPreMain, true);
EnableWindow(hbutton, true);
EnableWindow(HPreGio, true);
EnableWindow(HPreMese, true);
EnableWindow(HPreAnno, true);
EnableWindow(HPreid, true);
EnableWindow(hTBid, true);
EnableWindow(hTBpre, true);
}
【问题讨论】:
-
没有函数
EnableAllWindow,所以必须是自定义代码。也许你应该证明这一点。 -
您的变量是(原始?)意大利语和英语的混合体。例如,我猜
HricercaMain与HresearchMain相同。如果没有适当的最小示例,我们无法知道您的问题是什么。 -
如果您希望它们开始禁用,为什么不使用
WS_DISABLED? -
您使用的是“视觉风格”吗?这将有意删除边框并使控件看起来“扁平”。
-
对不起,我想把它们都翻译成英文