//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void ShellContext::Invoke(int nCmd) { HRESULT hr = S_OK; if (19 == nCmd) // rename { TCHAR oldName[256]; TCHAR newName[256]; WCHAR newNameW[256]; sh_get_displayname(psfFolder, pidlItem, SHGDN_NORMAL, oldName); if (IDOK == EditBox(_T("bbLean"), _T("Enter new name:"), oldName, newName, 256)) { #ifdef UNICODE wcsncpy_s(newNameW, 256, newName, _TRUNCATE); #else MultiByteToWideChar (CP_ACP, 0, newName, -1, newNameW, 256); #endif hr = psfFolder->SetNameOf(NULL, pidlItem, newNameW, SHGDN_NORMAL, NULL); } } else { CMINVOKECOMMANDINFO ici; ici.cbSize = sizeof(ici); ici.fMask = 0;//CMIC_MASK_FLAG_NO_UI; ici.hwnd = NULL; ici.lpVerb = (const CHAR*)(nCmd - MIN_SHELL_ID); ici.lpParameters = NULL; ici.lpDirectory = NULL; ici.nShow = SW_SHOWNORMAL; ici.dwHotKey = 0; ici.hIcon = NULL; hr = pContextMenu->InvokeCommand(&ici); } if (0==SUCCEEDED(hr)) { ;//MessageBeep(MB_OK); } }
//Entry point of the program int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { //Create a window cWindow = Window(WindowProcedure, hThisInstance, "MealTrackApp", nCmdShow); cWindow.Create("MealTrack - Untitled", 462, 375); //Actually create the button with the window as its parent RECT rEditBox = {16, 280, 272, 24}; cEditBox = EditBox(cWindow, rEditBox, "Disconnected"); cEditBox.SetReadOnly(1); //Create the Button RECT rButton = {304, 280, 128, 24}; cButton = Button(cWindow, rButton, "Start Meal", IDR_START_BUTTON); cButton.SetEnabled(0); //Create the listbox RECT rListBox = {16, 16, 272, 272}; cListBox = ListBox(cWindow, rListBox, "MealListBox"); //Meal wait box RECT rLabelDelay = {304, 16, 128, 16}; RECT rEditDelay = {304, 32, 128, 24}; cLabelDelay = Label(cWindow, rLabelDelay, "Meal wait (seconds)"); cEditDelay = EditBox(cWindow, rEditDelay, "10"); //Create Date format box RECT rLabelDate = {304, 64, 128, 16}; RECT rComboDate = {304, 80, 128, 24}; cLabelDate = Label(cWindow, rLabelDate, "Date format"); cComboDate = ComboBox(cWindow, rComboDate, "ComboBoxDate"); cComboDate.AddItem("12 Hour AM/PM"); cComboDate.AddItem("24 Hour"); cComboDate.SetDefaultItem(1); //Record format box RECT rLabelRecord = {304, 112, 128, 16}; RECT rComboRecord = {304, 128, 128, 24}; cLabelRecord = Label(cWindow, rLabelRecord, "Record change type"); cComboRecord = ComboBox(cWindow, rComboRecord, "ComboBoxRecord"); cComboRecord.AddItem("Increases"); cComboRecord.AddItem("Decreases"); cComboRecord.AddItem("Both"); cComboRecord.SetDefaultItem(1); //Record format box RECT rLabelSensitivity = {304, 160, 128, 16}; RECT rComboSensitivity = {304, 176, 128, 24}; cLabelSensitivity = Label(cWindow, rLabelSensitivity, "Sensitivity"); cComboSensitivity = ComboBox(cWindow, rComboSensitivity, "ComboBoxSensitivity"); cComboSensitivity.AddItem("0.01 g"); cComboSensitivity.AddItem("0.02 g"); cComboSensitivity.AddItem("0.03 g"); cComboSensitivity.AddItem("0.04 g"); cComboSensitivity.AddItem("0.05 g"); cComboSensitivity.AddItem("0.06 g"); cComboSensitivity.AddItem("0.07 g"); cComboSensitivity.AddItem("0.08 g"); cComboSensitivity.AddItem("0.09 g"); cComboSensitivity.SetDefaultItem(2); //Custom function to creeate window CreateWindowMenu(cWindow); //Message loop MSG msg; while (cWindow.GetMessage(&msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } // The program return-value is 0 - The value that PostQuitMessage() gave return msg.wParam; }