void TestPlat::run() { SelectMenu(); string str1; getline(cin,str1); while(str1 != "q"){ int j = 0; stringstream sst(str1); sst >> j; if(!sst || !sst.eof()){ cerr << "Not Number or there's space ! Try Again!" <<endl; getline(cin,str1); continue; } if(j >= TestPlat::SlnList.size() || j < 0){ cerr << "Invalid number(should < " << TestPlat::SlnList.size() << ")! Try again!" << endl; getline(cin,str1); continue; } int i = 0; for(auto& it : TestPlat::SlnList){ if(i == j){ SlnBase* p = it.second(); cout << "---------------------------" << endl; cout << it.first << endl; cout << "---------------------------" << endl; Start(p); delete p; cout << "------------DONE-----------" << endl; break; } i++; } cout << " 'r or enter'(re-run) 'm' (menu) 'q' (quit) or Alogorithm id!" << endl; string tmp; getline(cin,tmp); //cout << "your enter: " << tmp << endl; if(tmp == "" || tmp == "r") continue; if(tmp == "q") { cout<< "Quit the TestPlat" << endl; return; } if(tmp == "m"){ SelectMenu(); getline(cin,str1); continue; } str1 = tmp; } }
void nsMenuFrame::PopupClosed(PRBool aDeselectMenu) { nsWeakFrame weakFrame(this); nsContentUtils::AddScriptRunner( new nsUnsetAttrRunnable(mContent, nsGkAtoms::open)); if (!weakFrame.IsAlive()) return; // if the popup is for a menu on a menubar, inform menubar to deactivate if (mMenuParent && mMenuParent->MenuClosed()) { if (aDeselectMenu) { SelectMenu(PR_FALSE); } else { // We are not deselecting the parent menu while closing the popup, so send // a DOMMenuItemActive event to the menu to indicate that the menu is // becoming active again. nsMenuFrame *current = mMenuParent->GetCurrentMenuItem(); if (current) { nsCOMPtr<nsIRunnable> event = new nsMenuActivateEvent(current->GetContent(), PresContext(), PR_TRUE); NS_DispatchToCurrentThread(event); } } } }
int main(void) { Menu menu; BinNode *root; root = NULL; do { BinNode x; switch (menu = SelectMenu()) { case Insert :x = Read("Insert"); root = ApndNode(root,&x);break; case Search: x = Read("Search"); SrchNode(root,&x); break; case Print: puts("----------------"); PrintTree(root); break; case PrintSub: x = Read("Insert"); puts("----------------"); PrintSubTree(root, &x); break; } } while (menu != Term); FreeTree(root); return(0); }
int main(void) { Menu menu; List list; InitList(&list); do { Data x; switch (menu = SelectMenu()) { case InsFront: x = Read("先頭に挿入", NO | NAME); InsertFront(&list, x); break; case InsRear: x = Read("末尾に挿入", NO | NAME); InsertRear(&list, x); break; case RmvFront: RemoveFront(&list); break; case RmvRear: RemoveRear(&list); break; case PrintCrnt: PrintCrntNode(&list); break; case RmvCrnt: RemoveCrnt(&list); break; case SrchNo: x = Read("探索", NO); if (SearchNode(&list, x, NoEqual) != NULL){ PrintCrntNode(&list); } break; case SrchName: x = Read("探索", NAME); if(SearchNode(&list, x, NameEqual) != NULL){ PrintCrntNode(&list); } break; case PrintAll: PrintList(&list); break; case Clear: ClearList(&list); break; } } while (menu != Term); TermList(&list); return (0); }
/** The main event loop. */ void MainLoop() { XEvent event; keyRight = XKeysymToKeycode(display, XK_Right); keyLeft = XKeysymToKeycode(display, XK_Left); keyUp = XKeysymToKeycode(display, XK_Up); keyDown = XKeysymToKeycode(display, XK_Down); keyESC = XKeysymToKeycode(display, XK_Escape); keySpace = XKeysymToKeycode(display, XK_space); keyEnter = XKeysymToKeycode(display, XK_Return); keyBackspace = XKeysymToKeycode(display, XK_BackSpace); keyJ = XKeysymToKeycode(display, XK_J); keyK = XKeysymToKeycode(display, XK_K); keyL = XKeysymToKeycode(display, XK_L); keyI = XKeysymToKeycode(display, XK_I); ShowMenu(); for(;;) { while(XPending(display) > 0) { XNextEvent(display, &event); switch(event.type) { case Expose: RedrawMenu(); break; case KeyPress: if(event.xkey.keycode == keyDown || event.xkey.keycode == keyK) { MoveMenuDown(); } else if(event.xkey.keycode == keyUp || event.xkey.keycode == keyI) { MoveMenuUp(); } else if(event.xkey.keycode == keySpace || event.xkey.keycode == keyEnter) { if(!DoAction()) { return; } } break; case ButtonPress: if(!DoAction()) { return; } break; case MotionNotify: SelectMenu(event.xmotion.x, event.xmotion.y); break; default: break; } } } }
int main() { /* KAMUS */ /* ALGORITMA */ opening(); CreateEmptyQ(&Suggest); CreateEmptyUser(&LU); board_used = 1; BacaUser(&LU); BacaStatistic(); BacaDict(&DicT); SelectMenu(); TulisUser(&LU); TulisStatistic(); DeleteTree(&DicT); return 0; }
int main() { Menu menu; int cn = sizeof(cstr) / sizeof(cstr[0]); int vn = sizeof(vstr) / sizeof(vstr[0]); initscr(); cbreak(); noecho(); refresh(); srand(time(NULL)); do { switch (menu = SelectMenu()) { case KeyPos: pos_training(); break; case KeyPosComp: pos_training2(); break; case Clang: word_training("C言語の単語", cstr, cn); break; case Conversation: word_training("英会話", vstr, vn); break; } } while (menu != Term); printf("スペースキーで終了します\n\r"); fflush(stdout); while (getch() != ' '); endwin(); return 0; }
int main(int argc, char **argv) { MK_InitLibraries(); MK_LoadGfx(); Intro(); while(1)/// Infinite Loop /// { ExitForTheGame(); Play_Music(); switch(MenuIndex) { case 1: MainMenu(); break; case 2: InGame(); break; case 3: SelectMenu(); break; case 4: SelectSlot(); break; case 5: CreatingMenu(); break; case 6: SelectSlot2(); break; case 7: DrawTitle(); break; } ML_Refresh(); } return 0; }
/*--- メイン ---*/ int main(void) { Menu menu; Node *list; InitList(&list); do { Node x; int n; char name[NAMELEN]; switch (menu = SelectMenu()) { case Insert: x = Read("挿入"); InsertNode(&list, x.no, x.name); break; case InsertNth: x = Read("挿入"); printf("何番目? "); scanf("%d", &n); InsertNodeNth(&list, n, x.no, x.name); break; case Append: x = Read("挿入"); AppendNode(&list, x.no, x.name); break; case Delete: DeleteNode(&list); break; case DeleteNth: printf("何番目? "); scanf("%d", &n); DeleteNodeNth(&list, n); break; case Clear: ClearList(&list); break; case Print: PrintList(&list); break; } } while (menu != Term); TermList(&list); return (0); }
int main(){ Menu menu; BinNode *root; root = NULL; do { BinNode x; switch ( menu = SelectMenu()){ case Insert : x = Read("挿入"); root = InsertNode(root,&x); break; case Search : x = Read("探索"); SearchNode(root,&x); break; case Print : puts("--- 一覧表 ---"); PrintTree(root); break; } } while ( menu != Term); FreeTree(root); return 0; }
void EvtMousePopupMenu(struct XObj *xobj, XButtonEvent *EvtButton) { static XEvent event; int x,y,hOpt,yMenu,hMenu; int x1,y1,x2,y2,oldy; int oldvalue = 0; int newvalue = 0; Window Win1,Win2,WinPop; unsigned int modif; unsigned long mask; unsigned long while_mask; XSetWindowAttributes Attr; Time start_time = 0; KeySym ks; unsigned char buf[10]; Bool End = 1; int asc = xobj->Ffont->ascent; hOpt = xobj->Ffont->height + 10; xobj->value3 = CountOption(xobj->title); yMenu = xobj->y - ((xobj->value-1) * hOpt); hMenu = xobj->value3 * hOpt; /* Creation de la fenetre menu */ XTranslateCoordinates(dpy, *xobj->ParentWin, Root, xobj->x, yMenu, &x, &y, &Win1); if (x < 0) x = 0; if (y < 0) y = 0; if (x+xobj->width > XDisplayWidth(dpy, screen)) x = XDisplayWidth(dpy, screen) - xobj->width; if (y+hMenu > XDisplayHeight(dpy, screen)) y = XDisplayHeight(dpy, screen) - hMenu; mask = 0; Attr.background_pixel = xobj->TabColor[back]; mask |= CWBackPixel; Attr.border_pixel = 0; mask |= CWBorderPixel; Attr.colormap = Pcmap; mask |= CWColormap; Attr.cursor = XCreateFontCursor(dpy, XC_hand2); mask |= CWCursor; /* Curseur pour la fenetre / Window cursor */ Attr.override_redirect = True; mask |= CWOverrideRedirect; WinPop = XCreateWindow(dpy, Root, x, y, xobj->width, hMenu, 0, Pdepth, InputOutput, Pvisual, mask, &Attr); if (xobj->colorset >= 0) SetWindowBackground(dpy, WinPop, xobj->width, hMenu, &Colorset[xobj->colorset], Pdepth, xobj->gc, True); XMapRaised(dpy, WinPop); /* Dessin du menu / Drawing the menu */ DrawPMenu(xobj, WinPop, hOpt, 0); XGrabPointer(dpy, WinPop, True, GRAB_EVMASK, GrabModeAsync, GrabModeAsync, None, None, CurrentTime); if (EvtButton == NULL) { while_mask = ButtonPress; } else { start_time = EvtButton->time; while_mask = ButtonRelease; } while (End) { FQueryPointer(dpy, Root, &Win1, &Win2, &x1, &y1, &x2, &y2, &modif); /* Determiner l'option courante / Current option */ y2 = y2 - y; x2 = x2 - x; oldy = y2; /* calcule de xobj->value / compute xobj->value */ if ((x2 > 0) && (x2 < xobj->width) && (y2 > 0) && (y2 < hMenu)) newvalue = y2 / hOpt+1; else newvalue = 0; if (newvalue != oldvalue) { UnselectMenu(xobj, WinPop, hOpt, oldvalue, xobj->width, asc, 0); SelectMenu(xobj, WinPop, hOpt, newvalue); oldvalue = newvalue; } FNextEvent(dpy, &event); switch (event.type) { case KeyPress: XLookupString(&event.xkey, (char *)buf, sizeof(buf), &ks, NULL); if (ks == XK_Escape) { newvalue = 0; End = 0; } else if (ks == XK_Return) { End = 0; } else if (ks == XK_Up && y2 >= hOpt) { FWarpPointer(dpy, None, None, 0, 0, 0, 0, 0, -hOpt); } else if (ks == XK_Down && y2 + hOpt <= hMenu) { FWarpPointer(dpy, None, None, 0, 0, 0, 0, 0, hOpt); } break; case ButtonPress: if (while_mask == ButtonPress) End = 0; break; case ButtonRelease: if (start_time != 0 && event.xbutton.time - start_time < MENU_DRAG_TIME) { while_mask = ButtonPress; start_time = 0; } if (while_mask == ButtonRelease) End = 0; break; } } #if 0 do { FQueryPointer(dpy, Root, &Win1, &Win2, &x1, &y1, &x2, &y2, &modif); /* Determiner l'option courante / Current option */ y2 = y2 - y; x2 = x2 - x; { oldy = y2; /* calcule de xobj->value / compute xobj->value */ if ((x2 > 0) && (x2 < xobj->width) && (y2 > 0) && (y2 < hMenu)) newvalue = y2 / hOpt+1; else newvalue = 0; if (newvalue != oldvalue) { UnselectMenu(xobj, WinPop, hOpt, oldvalue, xobj->width, asc, 0); SelectMenu(xobj, WinPop, hOpt, newvalue); oldvalue = newvalue; } } FD_ZERO(&in_fdset); FD_SET(x_fd, &in_fdset); select(32, SELECT_FD_SET_CAST &in_fdset, NULL, NULL, NULL); } while (!FCheckTypedEvent(dpy, while_mask, &event)); #endif XUngrabPointer(dpy, CurrentTime); XSync(dpy,0); XDestroyWindow(dpy, WinPop); if (newvalue != 0) { xobj->value = newvalue; SendMsg(xobj, SingleClic); } }
void EvtMousePushButton(struct XObj *xobj, XButtonEvent *EvtButton) { static XEvent event; int End = 1; unsigned int modif; int x1,x2,y1,y2,i; Window Win1,Win2,WinPop; Window WinBut = 0; int In = 0; char *str; int x,y,hOpt,yMenu,hMenu,wMenu; int oldvalue = 0,newvalue; unsigned long mask; XSetWindowAttributes Attr; if (EvtButton->button == Button1) { i = (xobj->width - FlocaleTextWidth( xobj->Ffont, xobj->title, strlen(xobj->title)))/2; while (End) { FNextEvent(dpy, &event); switch (event.type) { case EnterNotify: FQueryPointer( dpy, *xobj->ParentWin, &Win1, &Win2, &x1, &y1, &x2, &y2, &modif); if (WinBut == 0) { WinBut = Win2; DrawReliefRect( 0, 0, xobj->width, xobj->height, xobj, shad, hili); DrawIconStr( 0,xobj, True, PUSH_BUTTON_LCR_OFFSETS, NULL, NULL, NULL); In = 1; } else { if (Win2 == WinBut) { DrawReliefRect( 0, 0, xobj->width, xobj->height, xobj, shad, hili); DrawIconStr( 1, xobj, True, PUSH_BUTTON_LCR_OFFSETS, NULL, NULL, NULL); In = 1; } else if (In) { In = 0; DrawReliefRect( 0, 0, xobj->width, xobj->height, xobj, hili, shad); DrawIconStr( 0, xobj, True, PUSH_BUTTON_LCR_OFFSETS, NULL, NULL, NULL); } } break; case LeaveNotify: FQueryPointer( dpy, *xobj->ParentWin, &Win1, &Win2, &x1, &y1, &x2, &y2, &modif); if (Win2 == WinBut) { In = 1; DrawReliefRect( 0, 0, xobj->width, xobj->height, xobj, shad, hili); DrawIconStr( 1, xobj, True, PUSH_BUTTON_LCR_OFFSETS, NULL, NULL, NULL); } else if (In) { DrawReliefRect( 0, 0, xobj->width, xobj->height, xobj, hili, shad); DrawIconStr( 0, xobj, True, PUSH_BUTTON_LCR_OFFSETS, NULL, NULL, NULL); In = 0; } break; case ButtonRelease: End = 0; DrawReliefRect( 0, 0, xobj->width, xobj->height, xobj, hili, shad); DrawIconStr( 0, xobj, True, PUSH_BUTTON_LCR_OFFSETS, NULL, NULL, NULL); if (In) { /* Envoie d'un message vide de type * SingleClic pour un clique souris */ xobj->value = 1; SendMsg(xobj, SingleClic); xobj->value = 0; } break; } } } /* affichage du popup menu / Drawing the popup menu */ else if (EvtButton->button == Button3) { if (xobj->value3 > 1) { hOpt = xobj->Ffont->height + 10; /* Hauteur totale du menu / Total height of the menu */ hMenu = (xobj->value3 - 1) * hOpt; yMenu = xobj->y + xobj->height; wMenu = 0; for (i = 2 ; i <= xobj->value3; i++) { str = (char*)GetMenuTitle(xobj->title, i); if (wMenu < FlocaleTextWidth( xobj->Ffont, str, strlen(str))+34) wMenu = FlocaleTextWidth( xobj->Ffont, str, strlen(str))+34; free(str); } /* Creation de la fenetre menu / create the menu * window */ XTranslateCoordinates(dpy, *xobj->ParentWin, Root, xobj->x, yMenu, &x, &y, &Win1); if (x<0) x = 0; if (y<0) y = 0; if (x + wMenu > XDisplayWidth(dpy, screen)) { x = XDisplayWidth(dpy, screen) - wMenu; } if (y + hMenu > XDisplayHeight(dpy, screen)) { y = y-hMenu-xobj->height; } mask = 0; Attr.background_pixel = xobj->TabColor[back]; mask |= CWBackPixel; Attr.border_pixel = 0; mask |= CWBorderPixel; Attr.colormap = Pcmap; mask |= CWColormap; Attr.cursor = XCreateFontCursor(dpy, XC_hand2); mask |= CWCursor; /* Curseur pour la fenetre */ Attr.override_redirect = True; mask |= CWOverrideRedirect; WinPop = XCreateWindow( dpy, Root, x, y, wMenu-5, hMenu, 0, Pdepth, InputOutput, Pvisual, mask, &Attr); if (xobj->colorset >= 0) SetWindowBackground( dpy, WinPop, wMenu - 5, hMenu, &Colorset[xobj->colorset], Pdepth, xobj->gc, True); XMapRaised(dpy, WinPop); /* Dessin du menu */ DrawPMenu(xobj, WinPop, hOpt, 1); do { FQueryPointer( dpy, Root, &Win1, &Win2, &x1, &y1, &x2, &y2, &modif); /* Determiner l'option courante / Current * option */ y2 = y2 - y; x2 = x2 - x; { /* calcule de xobj->value / Compute * xobj->value */ if ((x2 > 0) && (x2 < wMenu) && (y2 > 0) && (y2 < hMenu)) newvalue = y2 / hOpt+1; else newvalue = 0; if (newvalue!=oldvalue) { UnselectMenu( xobj, WinPop, hOpt, oldvalue, wMenu-5, xobj->Ffont->ascent, 1); SelectMenu( xobj, WinPop, hOpt, newvalue); oldvalue = newvalue; } } } while (!FCheckTypedEvent(dpy, ButtonRelease, &event)); XDestroyWindow(dpy, WinPop); if (newvalue != 0) { xobj->value = newvalue; SendMsg(xobj, SingleClic); xobj->value = 0; } xobj->DrawObj(xobj, NULL); } /* xobj->value3 > 1 */ } /* EvtButton->button == Button3 */ }
BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static LPNMTTDISPINFO lpnmtdi; static PAINTSTRUCT ps; static RECT windowRect; static HDC hdc; switch (message) { case WM_DWMCOMPOSITIONCHANGED: ActivateGlass(hDlg); InvalidateRect(hDlg, NULL, true); break; case WM_ACTIVATE: ActivateGlass(hDlg); break; case WM_PAINT: hdc = OnPaint(hDlg, windowRect, hdc, ps, IDS_APP_TITLE); break; case WM_INITDIALOG: hInstance = (HINSTANCE) GetWindowLong (hDlg, GWL_HINSTANCE); // Set Icon hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)); hIconSally = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_SALLY)); hIconWindow = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_MENU_WINDOW)); hIconConfig = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_MENU_CONFIG)); hIconApplication = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_PLUGIN_APPLICATION)); hIconLanguage = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_PLUGIN_LANGUAGE)); hIconTheme = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_PLUGIN_THEME)); hIconKeyboard = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_PLUGIN_KEYBORD)); SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM) hIcon); SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM) hIcon); // Menu himl = ImageList_Create(16, 16, ILC_COLOR32, 6, 0); ImageList_SetBkColor(himl, CLR_NONE); ImageList_AddIcon(himl, hIconWindow); ImageList_AddIcon(himl, hIconConfig); ImageList_AddIcon(himl, hIconApplication); ImageList_AddIcon(himl, hIconTheme); ImageList_AddIcon(himl, hIconLanguage); ImageList_AddIcon(himl, hIconKeyboard); hMenuView.SetHWND(GetDlgItem (hDlg, IDC_LIST_MENU)); hMenuView.SetImageList(himl, LVSIL_SMALL); ListView_SetExtendedListViewStyle(hMenuView.GetHwnd(), LVS_EX_FULLROWSELECT | WS_EX_LTRREADING); hMenuView.InitListViewColumns(0, "Settings", 190); hMenuView.AddItem(0, 0, GetLocalisation(IDS_MENU_CONFIG, hInstance), 1, 0); hMenuView.AddItem(1, 0, GetLocalisation(IDS_MENU_APPLICATIONS, hInstance), 2, 2); hMenuView.AddItem(2, 0, GetLocalisation(IDS_MENU_THEMES, hInstance), 3, 3); hMenuView.AddItem(3, 0, GetLocalisation(IDS_MENU_LANGUAGES, hInstance), 4, 4); hMenuView.AddItem(4, 0, GetLocalisation(IDS_MENU_KEYBOARDS, hInstance), 5, 5); // Tabs hWndTabConfig = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_CONFIG), hDlg, DlgProcConfig); ShowWindow(hWndTabConfig, SW_HIDE); hWndTabPlugins = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_PLUGINS), hDlg, DlgProcPlugins); ShowWindow(hWndTabPlugins, SW_HIDE); hWndTabThemes = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_THEMES), hDlg, DlgProcThemes); ShowWindow(hWndTabThemes, SW_HIDE); hWndTabLanguages = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_LANGUAGES), hDlg, DlgProcLanguages); ShowWindow(hWndTabLanguages, SW_HIDE); hWndTabKeyboards = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_KEYBOARDS), hDlg, DlgProcKeyboards); ShowWindow(hWndTabKeyboards, SW_HIDE); SelectMenu(0); hMenuView.SelectItem(0); break; case WM_NOTIFY: lpnmtdi = (LPNMTTDISPINFO) lParam; if (lpnmtdi->hdr.hwndFrom == hMenuView.GetHwnd()) { switch(lpnmtdi->hdr.code) { case LVN_ITEMCHANGED: LPNMLISTVIEW li; li = (LPNMLISTVIEW)lParam; if (li->uNewState != 3) break; case NM_CLICK: case NM_RCLICK: case NM_DBLCLK: case NM_RDBLCLK: SelectMenu(); break; } } break; case WM_SIZE: RECT windowRect; RECT menuViewRect; RECT tempViewRect; GetClientRect(hDlg, &windowRect); GetClientRect(hMenuView.GetHwnd(), &menuViewRect); MoveWindow(hMenuView.GetHwnd(), 7, TOP_BORDER_HEIGHT + 7, CONFIG_MENU_WIDTH - 7, windowRect.bottom - TOP_BORDER_HEIGHT - 14, TRUE); GetClientRect(hWndTabConfig, &tempViewRect); MoveWindow(hWndTabConfig, ((windowRect.right - CONFIG_MENU_WIDTH - tempViewRect.right) / 2) + CONFIG_MENU_WIDTH, ((windowRect.bottom - TOP_BORDER_HEIGHT - tempViewRect.bottom) / 2) + TOP_BORDER_HEIGHT, tempViewRect.right, tempViewRect.bottom, TRUE); MoveWindow(hWndTabPlugins, CONFIG_MENU_WIDTH, TOP_BORDER_HEIGHT, windowRect.right - CONFIG_MENU_WIDTH, windowRect.bottom - TOP_BORDER_HEIGHT, TRUE); MoveWindow(hWndTabThemes, CONFIG_MENU_WIDTH, TOP_BORDER_HEIGHT, windowRect.right - CONFIG_MENU_WIDTH, windowRect.bottom - TOP_BORDER_HEIGHT, TRUE); MoveWindow(hWndTabLanguages, CONFIG_MENU_WIDTH, TOP_BORDER_HEIGHT, windowRect.right - CONFIG_MENU_WIDTH, windowRect.bottom - TOP_BORDER_HEIGHT, TRUE); MoveWindow(hWndTabKeyboards, CONFIG_MENU_WIDTH, TOP_BORDER_HEIGHT, windowRect.right - CONFIG_MENU_WIDTH, windowRect.bottom - TOP_BORDER_HEIGHT, TRUE); SendMessage(hWndTabPlugins, WM_COMMAND, WM_SIZE, NULL); SendMessage(hWndTabThemes, WM_COMMAND, WM_SIZE, NULL); SendMessage(hWndTabLanguages, WM_COMMAND, WM_SIZE, NULL); SendMessage(hWndTabKeyboards, WM_COMMAND, WM_SIZE, NULL); break; case WM_COMMAND: switch (LOWORD (wParam)) { case IDCANCEL: EndDialog (hDlg, 0); return TRUE; } break; case WM_GETMINMAXINFO: LPMINMAXINFO(lParam)->ptMinTrackSize.x = 750; // kleinste Breite LPMINMAXINFO(lParam)->ptMinTrackSize.y = 520; // kleinste Höhe return 0; case WM_NCHITTEST: LRESULT lresult; lresult = DefWindowProc(hDlg, WM_NCHITTEST, wParam, lParam); if (lresult == HTCLIENT) { GetWindowRect(hDlg, &windowRect); int yPos; yPos = GET_Y_LPARAM(lParam); yPos = yPos - windowRect.top - GetSystemMetrics(SM_CYSIZE) - GetSystemMetrics(SM_CYBORDER); if (yPos <= TOP_BORDER_HEIGHT) lresult = HTCAPTION; } SetWindowLong( hDlg, DWL_MSGRESULT, lresult ); return (TRUE); } return FALSE ; }