VOID DIALOG_HelpAboutWine(VOID) { static const WCHAR notepadW[] = { 'N','o','t','e','p','a','d','\n',0 }; WCHAR szNotepad[MAX_STRING_LEN]; LoadString(Globals.hInstance, STRING_NOTEPAD, szNotepad, SIZEOF(szNotepad)); ShellAbout(Globals.hMainWnd, szNotepad, notepadW, 0); }
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { static const WCHAR szROS[] = { 'O','d','y','s','s','e','y',0 }; UNREFERENCED_PARAMETER(lpCmdLine); UNREFERENCED_PARAMETER(nCmdShow); UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(hInstance); ShellAbout(0, szROS, 0, 0); return 1; }
VOID DIALOG_HelpAboutWine(VOID) { TCHAR szNotepad[MAX_STRING_LEN]; HICON notepadIcon = LoadIcon(Globals.hInstance, MAKEINTRESOURCE(IDI_NPICON)); LoadString(Globals.hInstance, STRING_NOTEPAD, szNotepad, SIZEOF(szNotepad)); ShellAbout(Globals.hMainWnd, szNotepad, 0, notepadIcon); DeleteObject(notepadIcon); }
BOOL WinAbout(HWND hWnd) { TCHAR application[0x100]; TCHAR credits[0x100]; LoadString(GetModuleHandle(NULL),IDS_APPLICATION,application,sizeof(application)/sizeof(TCHAR)); LoadString(GetModuleHandle(NULL),IDS_CREDITS,credits,sizeof(credits)/sizeof(TCHAR)); return ShellAbout(hWnd,application,credits,LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_MAIN))); }
void CWordPadApp::OnAppAbout() { CString strTitle; VERIFY(strTitle.LoadString(AFX_IDS_APP_TITLE)); CString strInfo; strInfo.LoadString (IDS_ABOUT_INFO); ShellAbout(m_pMainWnd->GetSafeHwnd(), strTitle, strInfo, LoadIcon(IDR_MAINFRAME)); }
void CWordPadApp::OnAppAbout() { BOOL bValidString; CString strTitle; bValidString = strTitle.LoadString(AFX_IDS_APP_TITLE); ASSERT(bValidString); CString strInfo; bValidString = strInfo.LoadString (IDS_ABOUT_INFO); ASSERT(bValidString); ShellAbout(m_pMainWnd->GetSafeHwnd(), strTitle, strInfo, LoadIcon(IDR_MAINFRAME)); }
long FAR PASCAL __export WinWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HICON hIcon; switch (message) { case WM_COMMAND: switch (wParam) { case IDM_ABOUT: hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); ShellAbout(hWnd, Program, Title, hIcon); DestroyIcon(hIcon); break; case IDM_EXIT: DestroyWindow(hWnd); break; } break; case WM_SIZE: switch (wParam) { case SIZEICONIC: MessageBeep(0); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, message, wParam, lParam)); } return (0); }
long FAR PASCAL BinDemoWndProc(HWND hWnd, unsigned message, WORD wParam, LONG lParam) { PAINTSTRUCT ps; HDC hDC; RECT rect; switch (message) { case WM_CREATE: cdtInit(&csx,&csy); /* Get the card size */ csize = 1; /* display normal size */ cardoffset = 4; firstcard = 0; /* clubs */ cardback = 0; /* show front */ SetCardMarks(hWnd, IDM_CLUBS); SetCardMarks(hWnd, IDM_NORMAL); carddx = (int) (csize * csx); carddy = (int) (csize * csy); break; case WM_SIZE: InvalidateRect(hWnd, NULL, TRUE); break; case WM_COMMAND: switch(wParam) { case IDM_EXIT: DestroyWindow(hWnd); break; case IDM_ABOUT: { HICON hIcon; hIcon = LoadIcon(hInst, "BinDemoIcon"); ShellAbout(hWnd, "BinDemo Sample Application", "BinDemo", hIcon); DestroyIcon(hIcon); break; } case IDM_CLUBS: case IDM_DIAMONDS: case IDM_HEARTS: case IDM_SPADES: ClearCardMarks(hWnd, ID_FIRSTCARDID, ID_LASTCARDID); SetCardMarks(hWnd, wParam); firstcard = wParam - ID_FIRSTCARDID; cardoffset =4; cardback = 0; InvalidateRect(hWnd, NULL, TRUE); break; case IDM_BACKSIDES: ClearCardMarks(hWnd, ID_FIRSTCARDID, ID_LASTCARDID); SetCardMarks(hWnd, IDM_BACKSIDES); cardback = 1; cardoffset =1; firstcard = 53; InvalidateRect(hWnd, NULL, TRUE); break; case IDM_SMALL: case IDM_NORMAL: case IDM_LARGE: csize = sizes[wParam - ID_FIRSTSIZEID]; carddx = (int) (csize*csx); carddy = (int) (csize*csy); ClearCardMarks(hWnd, ID_FIRSTSIZEID, ID_LASTSIZEID); SetCardMarks(hWnd, wParam); InvalidateRect(hWnd, NULL, TRUE); break; } break; case WM_PAINT: { int i, d, x0, y0, dx, dy, dd; double phi, dphi; RECT r1, r2; hDC = BeginPaint(hWnd,&ps); GetClientRect(hWnd, &rect); /* calculate the starting position */ phi = 0; d = 0; x0 = (rect.right-carddx) /2; y0 = (rect.bottom-carddy)/2; dd = min(x0, y0) / 12; dphi = 3.1415926535 / 12; for(i=0;i<13;i++) { dy = (int) (d * cos(phi)); dx = (int) (d * sin(phi)); SetRect(&r1, x0+dx, y0+dy, x0+dx+carddx, y0+dy+carddy); if(IntersectRect(&r2, &r1, &ps.rcPaint)) cdtDrawExt(hDC,x0+dx,y0+dy,carddx, carddy, i*cardoffset+firstcard,cardback,RGBBKND); if(i!=0) /* the first card is the same for both directions */ { SetRect(&r1, x0-dx, y0-dy, x0-dx+carddx, y0-dy+carddy); if(IntersectRect(&r2, &r1, &ps.rcPaint)) cdtDrawExt(hDC,x0-dx,y0-dy,carddx, carddy, i*cardoffset+firstcard,cardback,RGBBKND); } phi += dphi; d += dd; } EndPaint(hWnd,&ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, message, wParam, lParam)); } return (0); }
static int MenuCommand(WPARAM wParam, HWND hWnd) { BOOL vis; HTREEITEM hSelect; WCHAR wszAbout[MAX_LOAD_STRING]; WCHAR wszAboutVer[MAX_LOAD_STRING]; switch(wParam) { case IDM_ABOUT: LoadString(globals.hMainInst, IDS_ABOUT, wszAbout, sizeof(WCHAR[MAX_LOAD_STRING])); LoadString(globals.hMainInst, IDS_ABOUTVER, wszAboutVer, sizeof(WCHAR[MAX_LOAD_STRING])); ShellAbout(hWnd, wszAbout, wszAboutVer, NULL); break; case IDM_COPYCLSID: hSelect = TreeView_GetSelection(globals.hTree); CopyClsid(hSelect); break; case IDM_HTMLTAG: hSelect = TreeView_GetSelection(globals.hTree); CopyHTMLTag(hSelect); break; case IDM_CREATEINST: hSelect = TreeView_GetSelection(globals.hTree); CreateInst(hSelect, NULL); SendMessage(globals.hTree, TVM_EXPAND, TVE_EXPAND, (LPARAM)hSelect); break; case IDM_CREATEINSTON: if(DialogBox(0, MAKEINTRESOURCE(DLG_CREATEINSTON), hWnd, CreateInstOnProc) == IDCANCEL) break; hSelect = TreeView_GetSelection(globals.hTree); CreateInst(hSelect, globals.wszMachineName); SendMessage(globals.hTree, TVM_EXPAND, TVE_EXPAND, (LPARAM)hSelect); break; case IDM_RELEASEINST: hSelect = TreeView_GetSelection(globals.hTree); ReleaseInst(hSelect); RefreshMenu(hSelect); RefreshDetails(hSelect); break; case IDM_EXPERT: globals.bExpert = !globals.bExpert; CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), globals.bExpert ? MF_CHECKED : MF_UNCHECKED); EmptyTree(); if(globals.bExpert) AddTreeEx(); else AddTree(); hSelect = TreeView_GetChild(globals.hTree, TVI_ROOT); SendMessage(globals.hTree, TVM_SELECTITEM, 0, (LPARAM)hSelect); RefreshMenu(hSelect); break; case IDM_FLAG_INSERV: vis = globals.dwClsCtx&CLSCTX_INPROC_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_INPROC_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_INPROC_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_INHANDL: vis = globals.dwClsCtx&CLSCTX_INPROC_HANDLER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_INPROC_HANDLER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_INPROC_HANDLER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_LOCSERV: vis = globals.dwClsCtx&CLSCTX_LOCAL_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_LOCAL_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_LOCAL_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_FLAG_REMSERV: vis = globals.dwClsCtx&CLSCTX_REMOTE_SERVER; globals.dwClsCtx = globals.dwClsCtx&(~CLSCTX_REMOTE_SERVER); globals.dwClsCtx = globals.dwClsCtx|((~vis)&CLSCTX_REMOTE_SERVER); if(!globals.dwClsCtx) globals.dwClsCtx = vis; else CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); break; case IDM_REFRESH: EmptyTree(); if(globals.bExpert) AddTreeEx(); else AddTree(); hSelect = TreeView_GetChild(globals.hTree, TVI_ROOT); SendMessage(globals.hTree, TVM_SELECTITEM, 0, (LPARAM)hSelect); RefreshMenu(hSelect); break; case IDM_REGEDIT: { STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); si.cb = sizeof(si); CreateProcess(NULL, wszRegEdit, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); break; } case IDM_STATUSBAR: vis = IsWindowVisible(globals.hStatusBar); ShowWindow(globals.hStatusBar, vis ? SW_HIDE : SW_SHOW); CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); ResizeChild(); break; case IDM_SYSCONF: DialogBox(0, MAKEINTRESOURCE(DLG_SYSCONF), hWnd, SysConfProc); break; case IDM_TOOLBAR: vis = IsWindowVisible(globals.hToolBar); ShowWindow(globals.hToolBar, vis ? SW_HIDE : SW_SHOW); CheckMenuItem(GetMenu(hWnd), LOWORD(wParam), vis ? MF_UNCHECKED : MF_CHECKED); ResizeChild(); break; case IDM_TYPELIB: { OPENFILENAME ofn; static WCHAR wszTitle[MAX_LOAD_STRING]; static WCHAR wszName[MAX_LOAD_STRING]; static WCHAR wszFilter[MAX_LOAD_STRING]; LoadString(globals.hMainInst, IDS_OPEN, wszTitle, sizeof(wszTitle)); LoadString(globals.hMainInst, IDS_OPEN_TYPELIB_FILTER, wszFilter, sizeof(wszFilter)); InitOpenFileName(hWnd, &ofn, wszFilter, wszTitle, wszName); if(GetOpenFileName(&ofn)) CreateTypeLibWindow(globals.hMainInst, wszName); break; } case IDM_VIEW: hSelect = TreeView_GetSelection(globals.hTree); if(IsInterface(hSelect)) InterfaceViewer(hSelect); else CreateTypeLibWindow(globals.hMainInst, NULL); break; case IDM_EXIT: DestroyWindow(hWnd); break; } return 0; }
static VOID MAIN_MenuCommand(HWND hWnd, WPARAM wParam, LPARAM lParam) { HLOCAL hActiveGroup = GROUP_ActiveGroup(); HLOCAL hActiveProgram = PROGRAM_ActiveProgram(hActiveGroup); HWND hActiveGroupWnd = GROUP_GroupWnd(hActiveGroup); switch(wParam) { /* Menu File */ case PM_NEW: switch (DIALOG_New((hActiveGroupWnd && !IsIconic(hActiveGroupWnd)) ? PM_NEW_PROGRAM : PM_NEW_GROUP)) { case PM_NEW_PROGRAM: if (hActiveGroup) PROGRAM_NewProgram(hActiveGroup); break; case PM_NEW_GROUP: GROUP_NewGroup(); break; } break; case PM_OPEN: if (hActiveProgram) PROGRAM_ExecuteProgram(hActiveProgram); else if (hActiveGroupWnd) OpenIcon(hActiveGroupWnd); break; case PM_MOVE: case PM_COPY: if (hActiveProgram) PROGRAM_CopyMoveProgram(hActiveProgram, wParam == PM_MOVE); break; case PM_DELETE: if (hActiveProgram) { if (DIALOG_Delete(IDS_DELETE_PROGRAM_s, PROGRAM_ProgramName(hActiveProgram))) PROGRAM_DeleteProgram(hActiveProgram, TRUE); } else if (hActiveGroup) { if (DIALOG_Delete(IDS_DELETE_GROUP_s, GROUP_GroupName(hActiveGroup))) GROUP_DeleteGroup(hActiveGroup); } break; case PM_ATTRIBUTES: if (hActiveProgram) PROGRAM_ModifyProgram(hActiveProgram); else if (hActiveGroup) GROUP_ModifyGroup(hActiveGroup); break; case PM_EXECUTE: DIALOG_Execute(); break; case PM_EXIT: PostQuitMessage(0); break; /* Menu Options */ case PM_AUTO_ARRANGE: Globals.bAutoArrange = !Globals.bAutoArrange; CheckMenuItem(Globals.hOptionMenu, PM_AUTO_ARRANGE, MF_BYCOMMAND | (Globals.bAutoArrange ? MF_CHECKED : MF_UNCHECKED)); WritePrivateProfileString("Settings", "AutoArrange", Globals.bAutoArrange ? "1" : "0", Globals.lpszIniFile); WritePrivateProfileString(NULL,NULL,NULL,Globals.lpszIniFile); /* flush it */ break; case PM_MIN_ON_RUN: Globals.bMinOnRun = !Globals.bMinOnRun; CheckMenuItem(Globals.hOptionMenu, PM_MIN_ON_RUN, MF_BYCOMMAND | (Globals.bMinOnRun ? MF_CHECKED : MF_UNCHECKED)); WritePrivateProfileString("Settings", "MinOnRun", Globals.bMinOnRun ? "1" : "0", Globals.lpszIniFile); WritePrivateProfileString(NULL,NULL,NULL,Globals.lpszIniFile); /* flush it */ break; case PM_SAVE_SETTINGS: Globals.bSaveSettings = !Globals.bSaveSettings; CheckMenuItem(Globals.hOptionMenu, PM_SAVE_SETTINGS, MF_BYCOMMAND | (Globals.bSaveSettings ? MF_CHECKED : MF_UNCHECKED)); WritePrivateProfileString("Settings", "SaveSettings", Globals.bSaveSettings ? "1" : "0", Globals.lpszIniFile); WritePrivateProfileString(NULL,NULL,NULL,Globals.lpszIniFile); /* flush it */ break; /* Menu Windows */ case PM_ARRANGE: if (hActiveGroupWnd && !IsIconic(hActiveGroupWnd)) ArrangeIconicWindows(hActiveGroupWnd); else SendMessage(Globals.hMDIWnd, WM_MDIICONARRANGE, 0, 0); break; /* Menu Help */ case PM_CONTENTS: if (!WinHelp(Globals.hMainWnd, "progman.hlp", HELP_INDEX, 0)) MAIN_MessageBoxIDS(IDS_WINHELP_ERROR, IDS_ERROR, MB_OK); break; case PM_HELPONHELP: if (!WinHelp(Globals.hMainWnd, "progman.hlp", HELP_HELPONHELP, 0)) MAIN_MessageBoxIDS(IDS_WINHELP_ERROR, IDS_ERROR, MB_OK); break; case PM_TUTORIAL: WinExec("wintutor.exe", SW_SHOWNORMAL); break; case PM_LICENSE: WineLicense(Globals.hMainWnd, Globals.lpszLanguage); break; case PM_NO_WARRANTY: WineWarranty(Globals.hMainWnd, Globals.lpszLanguage); break; case PM_ABOUT_WINE: ShellAbout(hWnd, "WINE", "Program Manager", 0); break; default: if (wParam >= PM_FIRST_LANGUAGE && wParam <= PM_LAST_LANGUAGE) STRING_SelectLanguageByNumber(wParam - PM_FIRST_LANGUAGE); else MAIN_MessageBoxIDS(IDS_NOT_IMPLEMENTED, IDS_ERROR, MB_OK); break; } }
LRESULT CALLBACK CMainWindow::WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { CMainWindow *that = (CMainWindow *) GetWindowLongPtr(hWnd, GWLP_USERDATA); switch (uMsg) { case WM_CREATE: { LPCREATESTRUCT pcs = (LPCREATESTRUCT) lParam; that = (CMainWindow *) pcs->lpCreateParams; // Create the MDI client window that will handle the MDI child windows CLIENTCREATESTRUCT ccs = { 0 }; ccs.hWindowMenu = GetSubMenu(GetMenu(hWnd), WINDOW_MENU_POSITION); ccs.idFirstChild = FIRST_MDI_CHILD; that->m_hMDIClient = CreateWindowEx( 0, _T("MDICLIENT"), 0, WS_CLIPCHILDREN | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, NULL, g_hInstance, &ccs ); if (that->m_hMDIClient == NULL) { return -1; } that->AddRef(); SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) that); break; } case WM_DESTROY: { SetWindowLongPtr(hWnd, GWLP_USERDATA, NULL); that->Release(); PostQuitMessage(0); break; } case WM_SETCURSOR: { if (that->m_bDisplayWaitCursor) { SetCursor(LoadCursor(NULL, IDC_WAIT)); return TRUE; } break; } case WM_INITMENU: { if (that->m_pEventCallback != NULL) { LONG nNumDevices = that->m_pEventCallback->GetNumDevices(); UINT uEnable = nNumDevices > 0 ? MF_ENABLED : MF_GRAYED; EnableMenuItem((HMENU) wParam, ID_FILE_FROM_SCANNER_OR_CAMERA, uEnable); } break; } case WM_COMMAND: { switch (LOWORD(wParam)) { case ID_FILE_FROM_SCANNER_OR_CAMERA: { that->OnFromScannerOrCamera(); break; } case ID_FILE_EXIT: { DestroyWindow(hWnd); break; } case ID_WINDOW_CASCADE: { SendMessage(that->m_hMDIClient, WM_MDICASCADE, 0, 0); break; } case ID_WINDOW_TILE_HORIZONTALLY: { SendMessage(that->m_hMDIClient, WM_MDITILE, MDITILE_HORIZONTAL, 0); break; } case ID_WINDOW_TILE_VERTICALLY: { SendMessage(that->m_hMDIClient, WM_MDITILE, MDITILE_VERTICAL, 0); break; } case ID_WINDOW_ARRANGE_ICONS: { SendMessage(that->m_hMDIClient, WM_MDIICONARRANGE, 0, 0); break; } case ID_HELP_ABOUT: { TCHAR szAppName[DEFAULT_STRING_SIZE] = _T(""); LoadString(g_hInstance, IDS_APP_NAME, szAppName, COUNTOF(szAppName)); ShellAbout(hWnd, szAppName, NULL, NULL); break; } } break; } } return DefFrameProc( hWnd, that == NULL ? NULL : that->m_hMDIClient, uMsg, wParam, lParam ); }
LONG APIENTRY MainWndProc( HWND hwnd, UINT message, UINT wParam, LONG lParam ) { char s[MAX_PATH]; static UINT uUpdateWindow_TimerId = 1; switch (message) { case WM_CREATE: g_CWindbgrmFeedback.UpdateInfo(hwnd); SetTimer(hwnd, uUpdateWindow_TimerId, 1500, NULL); break; case WM_TIMER: g_CWindbgrmFeedback.UpdateInfo(hwnd); UpdateWindow(hwnd); return 0; case WM_PAINT: // Give the user feedback as to what is going on { static long lCurrentlyPainting = FALSE; if (InterlockedExchange(&lCurrentlyPainting, TRUE)) { // Only 1 call at a time. Return 0 to indicate processed. return 0; } PAINTSTRUCT ps ={0}; HDC hdc = BeginPaint(hwnd, &ps); if (hdc) { SetBkMode(hdc, TRANSPARENT); g_CWindbgrmFeedback.PaintConnectionStatus(hwnd, hdc); } EndPaint(hwnd, &ps); InterlockedExchange(&lCurrentlyPainting, FALSE); } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDM_OPTIONS_EXIT: SendMessage( hwnd, WM_CLOSE, 0, 0 ); break; case IDM_OPTIONS_DEBUG_DLLS: // If the transport layer was specified via the command line, // warn the user, that his actions may cause the selection // of a new TL. if (g_RM_Windbgrm_WkSp.m_pszSelectedTL && pszTlName && strcmp(pszTlName, g_RM_Windbgrm_WkSp.m_pszSelectedTL)) { char szWarning[MAX_MSG_TXT]; Dbg(LoadString(g_hInst, IDS_Sys_Warning, szWarning, sizeof(szWarning))); WKSP_MsgBox(szWarning, IDS_Sys_Default_TL_Overriden, pszTlName, g_RM_Windbgrm_WkSp.m_pszSelectedTL); } DialogBox( g_hInst, MAKEINTRESOURCE(IDD_DLG_WINDBGRM_TRANSPORTLAYER), hwnd, TransportLayersDlgProc ); SetEvent( hEventLoadTl ); break; case IDM_HELP_CONTENTS: WinHelp(hwnd, szHelpFileName, HELP_CONTENTS, 0L); break; case IDM_HELP_ABOUT: ShellAbout( hwnd, "Windbg Remote", NULL, NULL ); break; } break; case WM_SYSCOMMAND: if (wParam == IDM_STATUS) { if (fConnected) { sprintf(s, "Connected to %s",ClientId); } else { strcpy(s, "Not Connected"); } MessageBox( hwnd, s, "WinDbgRm Connection Status", MB_OK | MB_ICONINFORMATION ); } break; case WM_DESTROY: ExitProcess( 0 ); break; } return DefWindowProc( hwnd, message, wParam, lParam ); }
// // 関数: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目的: メイン ウィンドウのメッセージを処理します。 // // WM_COMMAND - アプリケーション メニューの処理 // WM_PAINT - メイン ウィンドウの描画 // WM_DESTROY - 中止メッセージを表示して戻る // // LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { int id; RECT rc; HICON hIcon; CComPtr<IUnknown> pfunc; switch (msg) { case WM_CREATE: //ATLコントロールコンテナコードの初期化 //これで、ActiveXコントロールを生成できるようになる if(!AtlAxWinInit()){ MessageBox(hWnd, L"初期化エラー", L"エラー", MB_OK); } //ActiveXコントロールを生成 hMyIE = CreateWindow( L"AtlAxWin7", //クラス名 L"Shell.Explorer.2", //タイトル、GUID, ProgID, URLのいずれかを指定。 //"Shell.Explorer.2"を指定すると必要に応じてスクロールバーが出てくる WS_CHILD | WS_VISIBLE , 0, 0, 0, 0, hWnd, (HMENU)NULL, hInst, NULL); if(hMyIE == NULL){ MessageBox(hWnd, L"hMyIE Error", L"エラー", MB_OK); } //このままでは、内容が何も見えないので、作成したウインドウのハンドルを指定して //ATLコントロールのダイレクトインターフェースポインタを取得 AtlAxGetControl(hMyIE, &pfunc); pMyBr = pfunc; //これをコントロールインターフェースポインタに格納 //これでpMyBrを使って直接コントロールに命令できる //メンバーについては、"IWebBrowser2 Interface"のヘルプを参照 pMyBr->GoHome(); //Home画面に行く break; case WM_SIZE: GetClientRect(hWnd, &rc); //親ウインドウの表示領域を取得 //hMyIEのサイズを親ウインドウのサイズにする MoveWindow(hMyIE, 0, 0, rc.right - rc.left, rc.bottom - rc.top, TRUE); break; case WM_COMMAND: // 選択されたメニューの解析: switch (LOWORD(wp)) { case IDM_NAVI: if(DialogBox(hInst, L"MYURL", hWnd, (DLGPROC)MyUrlProc) == IDOK){ //szUrlにジャンプする pMyBr->Navigate(CComBSTR(szUrl), NULL, NULL, NULL, NULL); } break; case IDM_RELOAD: pMyBr->Refresh(); break; case IDM_END: SendMessage(hWnd, WM_CLOSE, 0, 0); break; case IDM_HOME: pMyBr->GoHome(); break; case IDM_PREVIOUS: pMyBr->GoBack(); break; case IDM_NEXT: pMyBr->GoForward(); break; case IDM_STOP: pMyBr->Stop(); break; case IDM_ABOUT: hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_INETBR)); ShellAbout(hWnd, L"猫でもわかるブラウザ#ブラウザ Ver0.9", L"Copyright(C) 2006 粂井康孝", hIcon); break; } break; case WM_CLOSE: id = MessageBox(hWnd, L"終了してもよろしいですか", (LPCWSTR)szAppName, MB_YESNO | MB_ICONQUESTION); if (id == IDYES) DestroyWindow(hWnd); break; case WM_DESTROY: //メモリをリリースする pMyBr.Release(); pfunc.Release(); _Module.Term(); PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wp, lp); } return 0; }
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_CREATE: InitControls(hwnd); break; case WM_NOTIFY: { LPNMHDR pnmhdr = (LPNMHDR)lParam; switch (pnmhdr->code) { case TTN_GETDISPINFO: { LPTOOLTIPTEXT lpttt = (LPTOOLTIPTEXT)lParam; UINT idButton = (UINT)lpttt->hdr.idFrom; switch (idButton) { case IDC_PLAY: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PLAY); break; case IDC_STOP: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_STOP); break; case IDC_EJECT: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_EJECT); break; case IDC_BACKWARD: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_BACKWARD); break; case IDC_SEEKBACK: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_SEEKBACK); break; case IDC_SEEKFORW: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_SEEKFORW); break; case IDC_FORWARD: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_FORWARD); break; } break; } } } break; case WM_SIZING: { LPRECT pRect = (LPRECT)lParam; if (pRect->right - pRect->left < MAIN_WINDOW_MIN_WIDTH) pRect->right = pRect->left + MAIN_WINDOW_MIN_WIDTH; if (pRect->bottom - pRect->top != MAIN_WINDOW_HEIGHT) pRect->bottom = pRect->top + MAIN_WINDOW_HEIGHT; return TRUE; } case WM_SIZE: { RECT Rect; UINT Size; if (hToolBar && hTrackBar) { SendMessage(hToolBar, TB_AUTOSIZE, 0, 0); SendMessage(hToolBar, TB_GETITEMRECT, 1, (LPARAM)&Rect); Size = GetSystemMetrics(SM_CYMENU) + Rect.bottom; MoveWindow(hTrackBar, 0, 0, LOWORD(lParam), HIWORD(lParam) - Size, TRUE); } return 0L; } case WM_HSCROLL: { if (hTrackBar == (HWND) lParam) { if (bIsOpened) { DWORD dwNewPos = (DWORD) SendMessage(hTrackBar, TBM_GETPOS, 0, 0); SeekPlayback(hwnd, dwNewPos); } else { SendMessage(hTrackBar, TBM_SETPOS, TRUE, 0); } } } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_PLAY: if (bIsOpened) { if (bIsPaused) ResumePlayback(hwnd); else PausePlayback(hwnd); } else { if (szPrevFile[0] == _T('\0')) OpenFileDialog(hwnd); else PlayFile(hwnd, NULL); } break; case IDC_STOP: StopPlayback(hwnd); break; case IDC_EJECT: break; case IDC_BACKWARD: break; case IDC_SEEKBACK: SeekBackPlayback(hwnd); break; case IDC_SEEKFORW: SeekForwPlayback(hwnd); break; case IDC_FORWARD: break; case IDM_OPEN_FILE: OpenFileDialog(hwnd); return 0; case IDM_CLOSE_FILE: StopPlayback(hwnd); _tcscpy(szPrevFile, _T("\0")); break; case IDM_ABOUT: { HICON mplayIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN)); ShellAbout(hwnd, szAppTitle, 0, mplayIcon); DeleteObject(mplayIcon); break; } case IDM_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); return 0; } break; case WM_DESTROY: StopPlayback(hwnd); PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, Message, wParam, lParam); }
LONG FAR PASCAL WndProc( HWND hwnd, WORD message, WORD wParam, LONG lParam) { char chbuf[50]; HICON hIcon; switch (message) { case WM_CREATE: break; case WM_DESTROY: // ignore since wowexec must stay around return 0; #ifdef DEBUG case WM_COMMAND: switch (LOWORD(wParam)) { case MM_ABOUT: LoadString(hAppInstance, errTitle, (LPSTR)chbuf, sizeof(chbuf)); hIcon = LoadIcon(hAppInstance, MAKEINTRESOURCE(ID_WOWEXEC_ICON)); ShellAbout(ghwndMain, (LPSTR)chbuf, (LPSTR)lpszAppTitle, hIcon); break; case MM_BREAK: _asm int 3 break; case MM_FAULT: _asm mov cs:0,ax break; case MM_EXIT: ExitKernelThunk(0); break; case MM_WATSON: WinExec("drwatson", SW_MINIMIZE ); break; case MM_PARTY: { FARPROC lpPartyDialogProc; lpPartyDialogProc = MakeProcInstance(PartyDialogProc, hAppInstance); DialogBox(hAppInstance, MAKEINTRESOURCE(ID_PARTY_DIALOG), hwnd, lpPartyDialogProc); FreeProcInstance(lpPartyDialogProc); } break; } break; #endif case WM_WOWEXECSTARTAPP: // WM_USER+0 #ifdef DEBUG OutputDebugString("WOWEXEC - got WM_WOWEXECSTARTAPP\n"); #endif // // Either BaseSrv or Wow32 asked us to go looking for // commands to run. // if (!gfSharedWOW) { // // We shouldn't get this message unless we are the shared // WOW VDM! // #ifdef DEBUG OutputDebugString("WOWEXEC - separate WOW VDM got WM_WOWEXECSTARTAPP!\n"); _asm int 3; #endif break; } // // Start requested apps until there are no more to start. // This handles the case where several Win16 apps are launched // in a row, before BaseSrv has the window handle for WowExec. // while (StartRequestedApp()) { /* Null stmt */ ; } break; #define WM_WOWEXEC_START_TASK (WM_USER+2) case WM_WOWEXEC_START_TASK: { char sz[512]; sz[ GlobalGetAtomName(wParam, sz, sizeof sz) ] = 0; GlobalDeleteAtom(wParam); WinExec(sz, (WORD)lParam); } case WM_WOWEXECHEARTBEAT: // Probably will never get here... break; case WM_TIMECHANGE: *((DWORD *)(((DWORD)40 << 16) | FIXED_NTVDMSTATE_REL40)) |= VDM_TIMECHANGE; break; case WM_DDE_INITIATE: { // In win31, the Program Manager WindowProc calls peekmessage to filterout // otherwindowcreated and otherwindowdestroyed messages (which are atoms in win31) // whenever it receives WM_DDE_INITIATE message. // // This has a side effect - basically when peekmessage is called the app ie program // manager effectively yields allowing scheduling of other apps. // // So we do the side effect thing (simulate win31 behaviour) - // // The bug: 20221, rumba as/400 can't connect the firsttime to sna server. // Scenario: Rumbawsf execs snasrv and blocks on yield, snasrv execs wnap and blocks // on yield. Eventually wnap yields and rumbawsf is scheduled which // broadcasts a ddeinitiate message. When WOWEXEC receives this message // it will peek for nonexistent msg, which allows snasrv to get scheduled MSG msg; while (PeekMessage(&msg, NULL, 0xFFFF, 0xFFFF, PM_REMOVE)) DispatchMessage(&msg); } break; case WM_CLOSE: #ifdef DEBUG ExitKernelThunk(0); #else // ignore since wowexec must stay around return 0; #endif // ! DEBUG default: return DefWindowProc(hwnd, message, wParam, lParam); }
int PASCAL WinMain (HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) { return ShellAbout(NULL, PACKAGE_NAME, PACKAGE_STRING, 0); }
long FAR PASCAL WinWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HICON hIcon; FARPROC lpDlg = (FARPROC)NULL; LPNMHDR pnmh; pnmh = (LPNMHDR) lParam; switch (message) { case WM_CREATE: hInstance = ( ( LPCREATESTRUCT )lParam )->hInstance; InitCommonControls(); CreateToolbar(hWnd); CreateStatusBar(hWnd); break; case WM_MENUSELECT: GetMenuSelect (hWndStatus, message, wParam, lParam); break; case WM_NOTIFY: switch (pnmh->code) { case TTN_NEEDTEXT: GetToolTipText((LPTOOLTIPTEXT)lParam); break; default: return (DefWindowProc(hWnd, message, wParam, lParam)); } break; case WM_COMMAND: switch (wParam) { case IDM_ABOUT: hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); ShellAbout(hWnd, Program, Title, hIcon); DestroyIcon(hIcon); break; case IDM_UPDOWN: if ( DialogBox ( hInstance, MAKEINTRESOURCE ( IDD_UPDOWNTEST ), hWnd, (DLGPROC)UpDownProc ) == -1 ) MessageBox ( hWnd, "Dialog Failed", "Error", MB_OK); break; case IDM_PROPSHEET: CreatePropSheet(hWnd); break; case IDM_EXIT: DestroyWindow(hWnd); break; } break; case WM_SIZE: SendMessage(hWndToolbar, message, wParam, lParam); SendMessage(hWndStatus, message, wParam, lParam); switch (wParam) { case SIZEICONIC: MessageBeep(0); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, message, wParam, lParam)); } return (0); }
static LRESULT CALLBACK MainWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { PMIXER_WINDOW MixerWindow; DWORD CtrlID, LineOffset; LRESULT Result = 0; SET_VOLUME_CONTEXT Context; switch (uMsg) { case WM_COMMAND: { MixerWindow = GetWindowData(hwnd, MIXER_WINDOW); switch (LOWORD(wParam)) { case IDC_PROPERTIES: { PREFERENCES_CONTEXT Pref; Pref.MixerWindow = MixerWindow; Pref.Mixer = NULL; Pref.SelectedLine = Preferences.SelectedLine; if (DialogBoxParam(hAppInstance, MAKEINTRESOURCE(IDD_PREFERENCES), hwnd, DlgPreferencesProc, (LPARAM)&Pref) == IDOK) { /* update window */ TCHAR szProduct[MAXPNAMELEN]; /* get mixer product name */ if (SndMixerGetProductName(MixerWindow->Mixer, szProduct, sizeof(szProduct) / sizeof(szProduct[0])) == -1) { /* failed to get name */ szProduct[0] = L'\0'; } else { /* copy product */ wcscpy(Preferences.DeviceName, szProduct); } /* destroy old status bar */ DestroyWindow(MixerWindow->hStatusBar); /* update details */ Preferences.SelectedLine = Pref.SelectedLine; /* destroy old mixer */ SndMixerDestroy(Preferences.MixerWindow->Mixer); /* use new selected mixer */ Preferences.MixerWindow->Mixer = Pref.Mixer; /* rebuild dialog controls */ RebuildMixerWindowControls(&Preferences); /* create status window */ MixerWindow->hStatusBar = CreateStatusWindow(WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, NULL, hwnd, 0); /* set status bar */ if (MixerWindow->hStatusBar) { SendMessage(MixerWindow->hStatusBar, WM_SETTEXT, 0, (LPARAM)szProduct); } } break; } case IDC_EXIT: { PostQuitMessage(0); break; } case IDC_ABOUT: { HICON hAppIcon = (HICON)GetClassLongPtrW(hwnd, GCLP_HICON); ShellAbout(hwnd, lpAppTitle, NULL, hAppIcon); break; } default: { /* get button id */ CtrlID = LOWORD(wParam); /* check if the message is from the line switch */ if (HIWORD(wParam) == BN_CLICKED && (CtrlID % IDC_LINE_SWITCH == 0)) { /* compute line offset */ LineOffset = CtrlID / IDC_LINE_SWITCH; /* compute window id of line name static control */ CtrlID = LineOffset * IDC_LINE_NAME; /* get line name */ if (GetDlgItemTextW(hwnd, CtrlID, Context.LineName, MIXER_LONG_NAME_CHARS) != 0) { /* setup context */ Context.SliderPos = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0); Context.bVertical = FALSE; Context.bSwitch = TRUE; /* set volume */ SndMixerEnumConnections(Preferences.MixerWindow->Mixer, Preferences.SelectedLine, SetVolumeCallback, (LPVOID)&Context); } } } } break; } case MM_MIXM_LINE_CHANGE: { DPRINT("MM_MIXM_LINE_CHANGE\n"); break; } case MM_MIXM_CONTROL_CHANGE: { DPRINT("MM_MIXM_CONTROL_CHANGE\n"); /* get mixer window */ MixerWindow = GetWindowData(hwnd, MIXER_WINDOW); /* sanity checks */ assert(MixerWindow); assert(MixerWindow->Mixer->hmx == (HMIXER)wParam); SndMixerEnumConnections(MixerWindow->Mixer, Preferences.SelectedLine, MixerControlChangeCallback, (PVOID)lParam); break; } case WM_VSCROLL: { if (LOWORD(wParam) == TB_THUMBTRACK) { /* get dialog item ctrl */ CtrlID = GetDlgCtrlID((HWND)lParam); /* get line index */ LineOffset = CtrlID / IDC_LINE_SLIDER_VERT; /* compute window id of line name static control */ CtrlID = LineOffset * IDC_LINE_NAME; /* get line name */ if (GetDlgItemTextW(hwnd, CtrlID, Context.LineName, MIXER_LONG_NAME_CHARS) != 0) { /* setup context */ Context.SliderPos = HIWORD(wParam); Context.bVertical = TRUE; Context.bSwitch = FALSE; /* set volume */ SndMixerEnumConnections(Preferences.MixerWindow->Mixer, Preferences.SelectedLine, SetVolumeCallback, (LPVOID)&Context); } } break; } case WM_CREATE: { MixerWindow = ((LPCREATESTRUCT)lParam)->lpCreateParams; SetWindowLongPtr(hwnd, GWL_USERDATA, (LONG_PTR)MixerWindow); MixerWindow->hWnd = hwnd; MixerWindow->Mixer = SndMixerCreate(MixerWindow->hWnd); if (MixerWindow->Mixer != NULL) { TCHAR szProduct[MAXPNAMELEN]; /* get mixer product name */ if (SndMixerGetProductName(MixerWindow->Mixer, szProduct, sizeof(szProduct) / sizeof(szProduct[0])) == -1) { /* failed to get name */ szProduct[0] = L'\0'; } /* initialize perferences */ ZeroMemory(&Preferences, sizeof(Preferences)); /* store mixer */ Preferences.Mixer = MixerWindow->Mixer; /* store mixer window */ Preferences.MixerWindow = MixerWindow; /* first destination line id */ Preferences.SelectedLine = 0xFFFF0000; /* copy product */ wcscpy(Preferences.DeviceName, szProduct); if (!RebuildMixerWindowControls(&Preferences)) { DPRINT("Rebuilding mixer window controls failed!\n"); SndMixerDestroy(MixerWindow->Mixer); MixerWindow->Mixer = NULL; Result = -1; } /* create status window */ MixerWindow->hStatusBar = CreateStatusWindow(WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, NULL, hwnd, 0); if (MixerWindow->hStatusBar) { SendMessage(MixerWindow->hStatusBar, WM_SETTEXT, 0, (LPARAM)szProduct); } } break; } case WM_DESTROY: { MixerWindow = GetWindowData(hwnd, MIXER_WINDOW); if (MixerWindow != NULL) { if (MixerWindow->Mixer != NULL) { SndMixerDestroy(MixerWindow->Mixer); } HeapFree(hAppHeap, 0, MixerWindow); } break; } case WM_CLOSE: { PostQuitMessage(0); break; } default: { Result = DefWindowProc(hwnd, uMsg, wParam, lParam); break; } } return Result; }
LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { switch (LOWORD(wParam)) { case IDM_HELPINFO: { HICON paintIcon = LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)); TCHAR infotitle[100]; TCHAR infotext[200]; LoadString(hProgInstance, IDS_INFOTITLE, infotitle, SIZEOF(infotitle)); LoadString(hProgInstance, IDS_INFOTEXT, infotext, SIZEOF(infotext)); ShellAbout(m_hWnd, infotitle, infotext, paintIcon); DeleteObject(paintIcon); break; } case IDM_HELPHELPTOPICS: HtmlHelp(m_hWnd, _T("help\\Paint.chm"), 0, 0); break; case IDM_FILEEXIT: SendMessage(WM_CLOSE, wParam, lParam); break; case IDM_FILENEW: { BOOL reset = TRUE; if (!imageModel.IsImageSaved()) { TCHAR programname[20]; TCHAR saveprompttext[100]; TCHAR temptext[500]; LoadString(hProgInstance, IDS_PROGRAMNAME, programname, SIZEOF(programname)); LoadString(hProgInstance, IDS_SAVEPROMPTTEXT, saveprompttext, SIZEOF(saveprompttext)); _stprintf(temptext, saveprompttext, filename); switch (MessageBox(temptext, programname, MB_YESNOCANCEL | MB_ICONQUESTION)) { case IDNO: imageModel.imageSaved = TRUE; //TODO: move to ImageModel break; case IDYES: saveImage(FALSE); break; case IDCANCEL: reset = FALSE; break; } } if (reset && imageModel.IsImageSaved()) //TODO: move to ImageModel { imageModel.Clear(); imageModel.ClearHistory(); } break; } case IDM_FILEOPEN: if (GetOpenFileName(&ofn) != 0) { HBITMAP bmNew = NULL; LoadDIBFromFile(&bmNew, ofn.lpstrFile, &fileTime, &fileSize, &fileHPPM, &fileVPPM); if (bmNew != NULL) { UpdateApplicationProperties(bmNew, ofn.lpstrFileTitle, ofn.lpstrFileTitle); } } break; case IDM_FILESAVE: saveImage(TRUE); break; case IDM_FILESAVEAS: saveImage(FALSE); break; case IDM_FILEPAGESETUP: // DUMMY: Shows the dialog only, no functionality PAGESETUPDLG psd; ZeroMemory(&psd, sizeof(psd)); psd.lStructSize = sizeof(psd); psd.hwndOwner = m_hWnd; PageSetupDlg(&psd); break; case IDM_FILEPRINT: // TODO: Test whether it actually works PRINTDLG pd; ZeroMemory(&pd, sizeof(pd)); pd.lStructSize = sizeof(pd); pd.hwndOwner = m_hWnd; pd.hDevMode = NULL; // freed by user pd.hDevNames = NULL; // freed by user pd.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC; pd.nCopies = 1; pd.nFromPage = 0xffff; pd.nToPage = 0xffff; pd.nMinPage = 1; pd.nMaxPage = 0xffff; if (PrintDlg(&pd) == TRUE) { BitBlt(pd.hDC, 0, 0, imageModel.GetWidth(), imageModel.GetHeight(), imageModel.GetDC(), 0, 0, SRCCOPY); DeleteDC(pd.hDC); } if (pd.hDevMode) GlobalFree(pd.hDevMode); if (pd.hDevNames) GlobalFree(pd.hDevNames); break; case IDM_FILEASWALLPAPERPLANE: RegistrySettings::SetWallpaper(filepathname, 1, 1); break; case IDM_FILEASWALLPAPERCENTERED: RegistrySettings::SetWallpaper(filepathname, 1, 0); break; case IDM_FILEASWALLPAPERSTRETCHED: RegistrySettings::SetWallpaper(filepathname, 2, 0); break; case IDM_EDITUNDO: imageModel.Undo(); imageArea.Invalidate(FALSE); break; case IDM_EDITREDO: imageModel.Redo(); imageArea.Invalidate(FALSE); break; case IDM_EDITCOPY: OpenClipboard(); EmptyClipboard(); SetClipboardData(CF_BITMAP, CopyImage(selectionModel.GetBitmap(), IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)); CloseClipboard(); break; case IDM_EDITCUT: /* Copy */ SendMessage(WM_COMMAND, IDM_EDITCOPY, 0); /* Delete selection */ SendMessage(WM_COMMAND, IDM_EDITDELETESELECTION, 0); break; case IDM_EDITPASTE: OpenClipboard(); if (GetClipboardData(CF_BITMAP) != NULL) { InsertSelectionFromHBITMAP((HBITMAP) GetClipboardData(CF_BITMAP), m_hWnd); } CloseClipboard(); break; case IDM_EDITDELETESELECTION: { /* remove selection window and already painted content using undo */ imageModel.Undo(); break; } case IDM_EDITSELECTALL: { HWND hToolbar = FindWindowEx(toolBoxContainer.m_hWnd, NULL, TOOLBARCLASSNAME, NULL); SendMessage(hToolbar, TB_CHECKBUTTON, ID_RECTSEL, MAKELPARAM(TRUE, 0)); toolBoxContainer.SendMessage(WM_COMMAND, ID_RECTSEL); //TODO: do this properly startPaintingL(imageModel.GetDC(), 0, 0, paletteModel.GetFgColor(), paletteModel.GetBgColor()); whilePaintingL(imageModel.GetDC(), imageModel.GetWidth(), imageModel.GetHeight(), paletteModel.GetFgColor(), paletteModel.GetBgColor()); endPaintingL(imageModel.GetDC(), imageModel.GetWidth(), imageModel.GetHeight(), paletteModel.GetFgColor(), paletteModel.GetBgColor()); break; } case IDM_EDITCOPYTO: if (GetSaveFileName(&ofn) != 0) SaveDIBToFile(selectionModel.GetBitmap(), ofn.lpstrFile, imageModel.GetDC(), NULL, NULL, fileHPPM, fileVPPM); break; case IDM_EDITPASTEFROM: if (GetOpenFileName(&ofn) != 0) { HBITMAP bmNew = NULL; LoadDIBFromFile(&bmNew, ofn.lpstrFile, &fileTime, &fileSize, &fileHPPM, &fileVPPM); if (bmNew != NULL) { InsertSelectionFromHBITMAP(bmNew, m_hWnd); DeleteObject(bmNew); } } break; case IDM_COLORSEDITPALETTE: if (ChooseColor(&choosecolor)) paletteModel.SetFgColor(choosecolor.rgbResult); break; case IDM_COLORSMODERNPALETTE: paletteModel.SelectPalette(1); break; case IDM_COLORSOLDPALETTE: paletteModel.SelectPalette(2); break; case IDM_IMAGEINVERTCOLORS: { imageModel.InvertColors(); break; } case IDM_IMAGEDELETEIMAGE: imageModel.CopyPrevious(); Rect(imageModel.GetDC(), 0, 0, imageModel.GetWidth(), imageModel.GetHeight(), paletteModel.GetBgColor(), paletteModel.GetBgColor(), 0, TRUE); imageArea.Invalidate(FALSE); break; case IDM_IMAGEROTATEMIRROR: switch (mirrorRotateDlg()) { case 1: /* flip horizontally */ if (selectionWindow.IsWindowVisible()) selectionModel.FlipHorizontally(); else imageModel.FlipHorizontally(); break; case 2: /* flip vertically */ if (selectionWindow.IsWindowVisible()) selectionModel.FlipVertically(); else imageModel.FlipVertically(); break; case 3: /* rotate 90 degrees */ break; case 4: /* rotate 180 degrees */ if (selectionWindow.IsWindowVisible()) selectionModel.RotateNTimes90Degrees(2); else imageModel.RotateNTimes90Degrees(2); break; case 5: /* rotate 270 degrees */ break; } break; case IDM_IMAGEATTRIBUTES: { if (attributesDlg()) { imageModel.Crop(widthSetInDlg, heightSetInDlg, 0, 0); } break; } case IDM_IMAGESTRETCHSKEW: { if (changeSizeDlg()) { imageModel.StretchSkew(stretchSkew.percentage.x, stretchSkew.percentage.y, stretchSkew.angle.x, stretchSkew.angle.y); } break; } case IDM_IMAGEDRAWOPAQUE: toolsModel.SetBackgroundTransparent(!toolsModel.IsBackgroundTransparent()); break; case IDM_IMAGECROP: imageModel.Insert((HBITMAP) CopyImage(selectionModel.GetBitmap(), IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)); break; case IDM_VIEWTOOLBOX: toolBoxContainer.ShowWindow(toolBoxContainer.IsWindowVisible() ? SW_HIDE : SW_SHOW); alignChildrenToMainWindow(); break; case IDM_VIEWCOLORPALETTE: paletteWindow.ShowWindow(paletteWindow.IsWindowVisible() ? SW_HIDE : SW_SHOW); alignChildrenToMainWindow(); break; case IDM_VIEWSTATUSBAR: ::ShowWindow(hStatusBar, ::IsWindowVisible(hStatusBar) ? SW_HIDE : SW_SHOW); alignChildrenToMainWindow(); break; case IDM_FORMATICONBAR: textEditWindow.ShowWindow(textEditWindow.IsWindowVisible() ? SW_HIDE : SW_SHOW); case IDM_VIEWSHOWGRID: showGrid = !showGrid; imageArea.Invalidate(FALSE); break; case IDM_VIEWSHOWMINIATURE: showMiniature = !showMiniature; miniature.ShowWindow(showMiniature ? SW_SHOW : SW_HIDE); break; case IDM_VIEWZOOM125: zoomTo(125, 0, 0); break; case IDM_VIEWZOOM25: zoomTo(250, 0, 0); break; case IDM_VIEWZOOM50: zoomTo(500, 0, 0); break; case IDM_VIEWZOOM100: zoomTo(1000, 0, 0); break; case IDM_VIEWZOOM200: zoomTo(2000, 0, 0); break; case IDM_VIEWZOOM400: zoomTo(4000, 0, 0); break; case IDM_VIEWZOOM800: zoomTo(8000, 0, 0); break; case IDM_VIEWFULLSCREEN: fullscreenWindow.ShowWindow(SW_SHOW); ShowWindow(SW_HIDE); break; } return 0; }