LPSTR allocstring(UINT nID,TypeOfResourceHandle bType) { LPSTR szBuffer; szBuffer=new CHAR[STR_LOADSTRINGBUFLEN]; if (szBuffer==NULL) { SetHFCError(HFC_CANNOTALLOCATE); return FALSE; } UINT nDataLen=::LoadStringA(GetResourceHandle(bType),nID,szBuffer,STR_LOADSTRINGBUFLEN); if (nDataLen>=STR_LOADSTRINGBUFLEN-2) { for (DWORD i=2;nDataLen>=i*STR_LOADSTRINGBUFLEN-2;i++) { delete[] szBuffer; szBuffer=new CHAR[i*STR_LOADSTRINGBUFLEN]; nDataLen=::LoadStringA(GetResourceHandle(bType),nID,szBuffer,i*STR_LOADSTRINGBUFLEN); } } char* pText=new char[nDataLen+1]; MemCopy(pText,szBuffer,nDataLen+1); delete[] szBuffer; return pText; }
int LoadString(UINT uID,LPWSTR lpBuffer,int nBufferMax,TypeOfResourceHandle bType) { if (!IsUnicodeSystem()) { char* pStr=new char[nBufferMax+1]; int nRet=::LoadStringA(GetResourceHandle(bType),uID,pStr,nBufferMax); MultiByteToWideChar(CP_ACP,0,pStr,nRet+1,lpBuffer,nBufferMax); delete[] pStr; return nRet; } return (int)::LoadStringW(GetResourceHandle(bType),uID,lpBuffer,nBufferMax); }
void CCrystalEditView::OnUpdateEditRedo(CCmdUI* pCmdUI) { BOOL bCanRedo = m_pTextBuffer != NULL && m_pTextBuffer->CanRedo(); pCmdUI->Enable(bCanRedo); // Since we need text only for menus... if (pCmdUI->m_pMenu != NULL) { // Tune up 'resource handle' HINSTANCE hOldResHandle = AfxGetResourceHandle(); AfxSetResourceHandle(GetResourceHandle()); CString menu; if (bCanRedo) { // Format menu item text using the provided item description CString desc; m_pTextBuffer->GetRedoDescription(desc); menu.Format(IDS_MENU_REDO_FORMAT, desc); } else { // Just load default menu item text menu.LoadString(IDS_MENU_REDO_DEFAULT); } // Restore original handle AfxSetResourceHandle(hOldResHandle); // Set menu item text pCmdUI->SetText(menu); } }
/** * リソースの検索 * @param[in] lpszName リソース ID * @param[in] lpszType リソースの型へのポインタ * @return インスタンス */ HINSTANCE CWndProc::FindResourceHandle(LPCTSTR lpszName, LPCTSTR lpszType) { HINSTANCE hInst = GetResourceHandle(); if ((hInst != GetInstanceHandle()) && (::FindResource(hInst, lpszName, lpszType) != NULL)) { return hInst; } return GetInstanceHandle(); }
ID2A::ID2A(UINT nID,TypeOfResourceHandle bType) { pStr=new CHAR[STR_LOADSTRINGBUFLEN]; if (pStr==NULL) { SetHFCError(HFC_CANNOTALLOCATE); return; } UINT nDataLen=::LoadStringA(GetResourceHandle(bType),nID,pStr,STR_LOADSTRINGBUFLEN); if (nDataLen>=STR_LOADSTRINGBUFLEN-2) { for (DWORD i=2;nDataLen>=i*STR_LOADSTRINGBUFLEN-2;i++) { delete[] pStr; pStr=new CHAR[i*STR_LOADSTRINGBUFLEN]; nDataLen=::LoadStringA(GetResourceHandle(bType),nID,pStr,i*STR_LOADSTRINGBUFLEN); } } }
//--------------------------------------------------------------------------------------- int DisplayMenu(HWND hWnd) { int nID = 0; HMENU hMenu = CreatePopupMenu(); if(hMenu) { HMODULE hMod = GetResourceHandle(); if(hMod) { TCHAR szBuf[MAX_PATH] = _T(""); LoadString(hMod, IDS_MNU_LAUNCH, szBuf, MAX_PATH); AppendMenu(hMenu, MF_STRING, 1, szBuf); if(IsServiceRunning()) { LoadString(hMod, IDS_MNU_STOP, szBuf, MAX_PATH); AppendMenu(hMenu, MF_STRING, 2, szBuf); } else { LoadString(hMod, IDS_MNU_START, szBuf, MAX_PATH); AppendMenu(hMenu, MF_STRING, 2, szBuf); } LoadString(hMod, IDS_MNU_ABOUT, szBuf, MAX_PATH); AppendMenu(hMenu, MF_STRING, 3, szBuf); AppendMenu(hMenu, MF_SEPARATOR, 0, NULL); LoadString(hMod, IDS_MNU_EXIT, szBuf, MAX_PATH); AppendMenu(hMenu, MF_STRING, 4, szBuf); FreeResourceHandle(hMod); } POINT pt = {0}; GetCursorPos (&pt); SetMenuDefaultItem(hMenu, 0, TRUE); nID = TrackPopupMenu(hMenu, TPM_RETURNCMD | TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL); DestroyMenu(hMenu); } return nID; }
int SetViewCursor(HVIEW view, HCURSOR cursor) { RETURN_IF_NULL(view); RETURN_IF_NULL(cursor); struct IResource *res = NULL; if (!(res = (struct IResource*)cursor)) { return GI_ERROR; } struct wm_args args; args.param1 = (int)GetResourceHandle(res); if (Viewcall((int)view, WINCMD_CREATEWIN, &args)) { return 0; } return 1; }
//--------------------------------------------------------------------------------------- int DisplayAbout(HWND hWnd) { HMODULE hMod = GetResourceHandle(); if(hMod) { TCHAR szTitle[MAX_PATH] = _T(""); LoadString(hMod, IDS_APP_NAME, szTitle, MAX_PATH); const int BUF_SIZE = MAX_PATH * 2; TCHAR szMsg[BUF_SIZE] = _T(""); LoadString(hMod, IDS_APP_ABOUT, szMsg, BUF_SIZE); MessageBox(hWnd, szMsg, szTitle, MB_ICONINFORMATION | MB_OK); FreeResourceHandle(hMod); } return 0; }
BOOL RegisterDataTimeExCltr() { WNDCLASSEX wc; ZeroMemory(&wc,sizeof(WNDCLASSEX)); wc.cbSize=sizeof(WNDCLASSEX); wc.style=CS_DBLCLKS|CS_VREDRAW|CS_HREDRAW|CS_PARENTDC; wc.hInstance=GetInstanceHandle(); wc.lpszClassName="DATETIMEPICKEX"; wc.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1); wc.lpfnWndProc=CDateTimeCtrlEx::WndProc; if (RegisterClassEx(&wc)==NULL) return FALSE; ZeroMemory(&wc,sizeof(WNDCLASSEX)); wc.cbSize=sizeof(WNDCLASSEX); wc.style=CS_DBLCLKS|CS_VREDRAW|CS_HREDRAW|CS_PARENTDC; wc.hInstance=GetResourceHandle(LanguageSpecificResource); wc.lpszClassName="DATETIMEPICKEX"; wc.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1); wc.lpfnWndProc=CDateTimeCtrlEx::WndProc; return RegisterClassEx(&wc)!=NULL; }
int SetViewSurface(HVIEW view, HSURFACE surface) { RETURN_IF_NULL(view); RETURN_IF_NULL(surface); struct IResource *res = NULL; if (!(res = (struct IResource*)surface)) { return GI_ERROR; } struct wm_args args; args.param1 = (int)res->width; args.param2 = (int)res->height; args.param3 = (int)res->stride; args.param4 = (int)GetResourceHandle(res); args.param5 = (int)res->bpp; if (Viewcall((int)view, WINCMD_SETSURFACE, &args)) { return 0; } return 1; }
//--------------------------------------------------------------------------------------- LRESULT OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam) { LRESULT lr = 0; PNOTIFYICONDATA pTrayIcon = (PNOTIFYICONDATA)malloc(sizeof(NOTIFYICONDATA)); if(pTrayIcon) { ZeroMemory(pTrayIcon, sizeof(NOTIFYICONDATA)); HMODULE hMod = LoadLibrary(_T("shell32.dll")); if(hMod) { FNDllGetVersion pfnDllGetVersion = (FNDllGetVersion)GetProcAddress(hMod, "DllGetVersion"); if(pfnDllGetVersion) { DLLVERSIONINFO VerInfo = {0}; VerInfo.cbSize = sizeof(VerInfo); pfnDllGetVersion(&VerInfo); if(VerInfo.dwMajorVersion == 6) { if(VerInfo.dwBuildNumber > 6) pTrayIcon->cbSize = sizeof(NOTIFYICONDATA); else pTrayIcon->cbSize = NOTIFYICONDATA_V3_SIZE; pTrayIcon->uVersion = NOTIFYICON_VERSION_4; } else if(VerInfo.dwMajorVersion == 5) { pTrayIcon->cbSize = NOTIFYICONDATA_V2_SIZE; pTrayIcon->uVersion = NOTIFYICON_VERSION; } else { pTrayIcon->cbSize = NOTIFYICONDATA_V1_SIZE; } } FreeLibrary(hMod); hMod = NULL; } pTrayIcon->hWnd = hWnd; pTrayIcon->uFlags = NIF_INFO | NIF_TIP | NIF_ICON | NIF_MESSAGE; pTrayIcon->dwInfoFlags = NIIF_USER; pTrayIcon->uCallbackMessage = WM_TRAY; pTrayIcon->uTimeout = 10000; pTrayIcon->hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_OPENNMS_TRAY), IMAGE_ICON, 0, 0, 0); hMod = GetResourceHandle(); if(hMod) { TCHAR szBuf[MAX_PATH] = _T(""); LoadString(hMod, IDS_TRAY_TIP, szBuf, MAX_PATH); _tcsncpy_s(pTrayIcon->szTip, ARRAYSIZE(pTrayIcon->szTip), szBuf, _TRUNCATE); LoadString(hMod, IDS_TRAY_INFOTITLE, szBuf, MAX_PATH); _tcsncpy_s(pTrayIcon->szInfoTitle, ARRAYSIZE(pTrayIcon->szInfoTitle), szBuf, _TRUNCATE); LoadString(hMod, IDS_TRAY_INFOTEXT, szBuf, MAX_PATH); _tcsncpy_s(pTrayIcon->szInfo, ARRAYSIZE(pTrayIcon->szInfo), szBuf, _TRUNCATE); FreeResourceHandle(hMod); } Sleep(5000); Shell_NotifyIcon(NIM_ADD, pTrayIcon); SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)pTrayIcon); } return lr; }