PDA

View Full Version : سوال در مورد کنترل ایجاد شده به صورت dynamic در win32



m-taheri
چهارشنبه 04 فروردین 1389, 14:20 عصر
با سلام.

چطور میتونیم برای یک button که به صورت داینامیک ایجاد شده است یک ID تعین کنیم و از آن ID درون SWITCH استفاده کنیم؟




case WM_COMMAND:
switch(LOWORD(wParam))
{
case firstB:
//ohdlg = GetDlgItem(hDlg,firstB);
hwndDialog = CreateWindow(TEXT("BUTTON"), TEXT("Clear"),
BS_TEXT | WS_CHILD | WS_VISIBLE,261,21,100, 100, hDlg, NULL, hInst, NULL);
SendMessage(hwndDialog, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0));
ShowWindow(hwndDialog, SW_SHOW);
break;
case SecondB:
len = GetWindowTextLength(hEdit1)+1;
lpString3 = new wchar_t[len];
GetWindowText(hEdit1,lpString3,len);
SendDlgItemMessage(hDlg, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)lpString3);
delete lpString3;
break;
case ? :

break;
}

Nima_NF
چهارشنبه 04 فروردین 1389, 20:34 عصر
در تابع CreateWindow شما می توانید پارمتر سوم از آخر (همان hMenu ) که Null قرار دادید را ID مورد نظر قرار دهید تا این ID به همان شناسه child برای کنترل شما ثبت شود. مثلا ID_B1 که عدد آن را باید در resource.h قبلا تعریف کرده باشید، یا کلا به جای اسم، مستقیم عدد برای ID در پارامتر قرار دهید.
مثلا شناسه توسط پیام WM_COMMAND و در wparam قابل دریافت هست.