(Titlebar) תרתוכה תרוש - C/C++
ישאר דומע | םיניינע ןכות סינוקא ןד תאמ

ללכ ךרדב עיפוי ,חיש-וד ןולח .תרתוכ תרוש םמיע םיליכמ העדוה תביתו חיש-וד ןולח ,ישארה ןולחה
היהת ןולחה לש תרתוכה תרוש ,ןכל .תינכותה תציר םע דימ אלו טירפת תייצפואב רחב שמתשמש ירחא
.הרחבנש טירפתה תייצפואמ תעפשומ
.CreateWindow-ב שומישה י"ע התוא ונחלש .העובק תישארה ןולחה תרתוכ התיה וישכע דע
היצקנופה הנשי ,ןכ ומכ .SetWindowText היצקנופב שמתשנ ,ןולחה תרתוכ תא תונשל הצרנשכ
אוה רתויב לקה רבדה .ישארה ןולחה לש תיחכונה תרתוכה תא לבקנ התרזעב רשא GetWindowText
תרתוכה תא תונשל הצרנ רשאכ ,לשמל .WndProc היצקנופה ךותב הלאה תויצקנופה יתשב שמתשהל
:ינמי ןצחל תציחל לש העדוהב לופיטב הלאה תויצנקופה יתש תא םושרנ ,רבכעה לש ינמיה ןצחלה ץחלנשכ
case WM_RBUTTONDOWN:
     SetWindowText(hWnd, "Hello");
     return 0;

.ותוא שפחל ךרטצנ אלו hWnd-ה תא ונל שי רבכש איה WndProc ךותב שומישל הביסה
:תחתפנ גולאידה תבית רשאכ ישארה ןולחה תרתוכ יונישל אמגוד הנה
// םדוקה רועישהמ היצקנופה םע וזה היצקנופה תא הנש

BOOL CALLBACK InputProc(HWND hDlg, UINT iMsg, 
                        WPARAM wParam, LPARAM lParam)
  { 
    static HWND hWnd;
    static char OldTitle[81];

    switch(iMsg)
      { 
        case WM_INITDIALOG:
             hWnd = pWin->hWnd;
             GetWindowText(hWnd, OldTitle, 80);
             SetWindowText(hWnd, "Working with dialogwindow");
             SetFocus(GetDlgItem(hDlg, ID_A));
             return FALSE;
        case WM_COMMAND:
             switch (LOWORD(wParam))
               { 
                 case ID_OK:
                   { 
                     char buffer[16]; char title[30]="";
                     int aGood, bGood;
                     GetDlgItemText(hDlg, ID_A, buffer, 15);

                     aGood = (sscanf(buffer, "%f", &a) == 1);
                     if (!aGood)
                       strcpy (title, "a False     ");
                     GetDlgItemText(hDlg, ID_B, buffer, 15);

                     bGood = (sscanf(buffer, "%f", &b) == 1);
                     if (!bGood)
                       strcat (title, "b False");

                     if (aGood + bGood == 2)
                       { 
                         SetWindowText(hWnd, OldTitle);
                         EndDialog(hDlg, 2);
                       }
                     else 
                       SetWindowText (hDlg, title);
                     
                     return TRUE;
                   }
                 case ID_CANCEL:
                      EndDialog(hDlg, -1);
                      return TRUE;
               }
            break;
      }
    return FALSE;
  }

י"ע ישארה ןולחה לש hWnd-ה תלבק אוה השענש ןושארב רבדה ,WM_INITDIALOG העדוהה דוביעב
:(w טקייבואה) ןולחה ינותנ לכ תא ללוכה הנבמה לע עיבצמ רשא pWin ילבולגה עיבצמל השיגה
hWnd = pWin->hWnd;

םייק היה אל אוה םא ךא .וכרד hWnd לא תשגל םילוכי ונייהו ילבולגה עיבצמה תא ונל היה הז הרקמב
:ישארה ןולחה לש hWnd תא לבקל ידכב וזה הטישב םישמתשמ ונייה
hWnd = GetWindow(hDlg, GW_OWNER);

תא תא למסמ OWNER-ה .GetWindow היצקנופה תא למסמ GW ."םיינשל תקלוחמ" GW_OWNER הלימה
גולאידה לע יארחאה לש hWnd-ה תא הריזחמ היצקנופה ,רמולכ .hDlg-ב גצוימה ןולחל יארחאש ןולחה
.(ישארה ןולחה)
הרקי הז .התומדקל כ"חא התוא ריזחהל ידכב OldTitle ךרעמב תרמשנ הנשיה ישארה ןולחה תרתוכ וישכע
םיריזחמ ,חיש-ודה ןולח תמלעה ינפל) םלעיי חיש-ודה ןולחו םיינקת םירפסמ ינש סינכי שמתשמה רשאכ
םיבזוע ונא רשאכ םג וכרע לע רומשל ידכב static-כ רדגומ תויהל בייח הזה ךרעמה .(התומדקל תרתוכה תא
ןכלו ןורכזב שדחמ רדגוי ךרעמה ,WndProc היצקנופל רוזחנשכ ,תאז השענ אל םא .WndProc היצנקופה תא
.תמדוקה תרתוכה תא ליכי אל

הדוקפה י"ע המיאתמ העדוה םע הנתשמ חיש-ודה ןולח תרתוכ ,טלקה תוביתב ינקת אל רפסמ סנכומשכ
SetWindowText(hDlg, title);
.(הדוקפל האירקה ינפל תינבנ תרתוכה)

:ינקת אל אוה b רטמרפה רשאכ תרתוכה יונישל אמגוד

םע ןולחה תרתוכ הנתשת רחא בצמ לכב .ןולחה םלעיי Cancel ץחלנש וא םיינקת םירפסמה 2 רשאכ קר ,וישכע
ןולחמ רזחומה ךרעל תוסחייתמש תורושה תא תונשל ךרטצנ WndProc היצקנופב ,ןכל .המיאתמ האיגש תעדוה
:םעפ ףא םייקתת אל איהש ינפמ קחמיהל הרומא אבה הרושה .0,1 חיש-ודה


else if (n >= 0)
       MessageBox(hWnd, "Bad input", "Error", MB_OK | MB_ICONSTOP);