void BuildFont(void) { #if defined(G_OS_WIN) && !defined(__CYGWIN__) && !defined(__GNUC__) myhdc = GetDC(0); HFONT font; // Windows Font ID base = glGenLists(96); // Storage For 96 Characters font = CreateFontA(-10, // Height Of Font 0, // Width Of Font 0, // Angle Of Escapement 0, // Orientation Angle FW_BOLD, // Font Weight FALSE, // Italic FALSE, // Underline FALSE, // Strikeout ANSI_CHARSET, // Character Set Identifier OUT_TT_PRECIS, // Output Precision CLIP_DEFAULT_PRECIS, // Clipping Precision NONANTIALIASED_QUALITY, // Output Quality FF_DONTCARE|DEFAULT_PITCH, // Family And Pitch "Arial"); // Font Name SelectObject(myhdc, font); // Selects The Font We Want wglUseFontBitmaps(myhdc, 32, 96, base); #endif }
void GLFont::buildBaseImage( int size , char const* faceName , HDC hDC ) { mSize = size; HFONT font; // Windows Font ID HFONT oldfont; // Used For Good House Keeping mIdBaseList = glGenLists(96); // Storage For 96 Characters int height = -(int)(fabs( ( float)10 * size *GetDeviceCaps( hDC ,LOGPIXELSY)/72)/10.0+0.5); font = CreateFontA( height , // Height Of Font 0, // Width Of Font 0, // Angle Of Escapement 0, // Orientation Angle FW_BOLD, // Font Weight FALSE, // Italic FALSE, // Underline FALSE, // Strikeout ANSI_CHARSET, // Character Set Identifier OUT_TT_PRECIS, // Output Precision CLIP_DEFAULT_PRECIS, // Clipping Precision ANTIALIASED_QUALITY, // Output Quality FF_DONTCARE|DEFAULT_PITCH, // Family And Pitch faceName ); // Font Name oldfont = (HFONT)SelectObject(hDC, font); // Selects The Font We Want wglUseFontBitmaps(hDC, 32, 96, mIdBaseList); // Builds 96 Characters Starting At Character 32 SelectObject(hDC, oldfont); // Selects The Font We Want DeleteObject(font); // Delete The Font }
static LRESULT WINAPI wmp_wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_PAINT: { PAINTSTRUCT ps; HFONT font; RECT rect; HDC hdc; TRACE("WM_PAINT\n"); GetClientRect(hwnd, &rect); hdc = BeginPaint(hwnd, &ps); SelectObject(hdc, GetStockObject(DC_BRUSH)); SetDCBrushColor(hdc, RGB(255,0,0)); SetBkColor(hdc, RGB(255,0,0)); font = CreateFontA(25,0,0,0,400,0,0,0,ANSI_CHARSET,0,0,DEFAULT_QUALITY,DEFAULT_PITCH,NULL); SelectObject(hdc, font); Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom); DrawTextA(hdc, "FIXME: WMP", -1, &rect, DT_CENTER | DT_SINGLELINE | DT_VCENTER); DeleteObject(font); EndPaint(hwnd, &ps); break; } } return DefWindowProcW(hwnd, msg, wParam, lParam); }
void selectFont(int size, int charset, const char* face) { HFONT hFont = CreateFontA(size, 0, 0, 0, FW_MEDIUM, 0, 0, 0, charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, face); HFONT hOldFont = (HFONT)SelectObject(wglGetCurrentDC(), hFont); DeleteObject(hOldFont); }
static void paint_document(HTMLDocumentObj *This) { PAINTSTRUCT ps; RECT rect; HDC hdc; GetClientRect(This->hwnd, &rect); hdc = BeginPaint(This->hwnd, &ps); if(!(This->hostinfo.dwFlags & (DOCHOSTUIFLAG_NO3DOUTERBORDER|DOCHOSTUIFLAG_NO3DBORDER))) DrawEdge(hdc, &rect, EDGE_SUNKEN, BF_RECT|BF_ADJUST); if(!This->nscontainer) { WCHAR wszHTMLDisabled[100]; HFONT font; LoadStringW(hInst, IDS_HTMLDISABLED, wszHTMLDisabled, sizeof(wszHTMLDisabled)/sizeof(WCHAR)); font = CreateFontA(25,0,0,0,400,0,0,0,ANSI_CHARSET,0,0,DEFAULT_QUALITY,DEFAULT_PITCH,NULL); SelectObject(hdc, font); SelectObject(hdc, GetSysColorBrush(COLOR_WINDOW)); Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom); DrawTextW(hdc, wszHTMLDisabled,-1, &rect, DT_CENTER | DT_SINGLELINE | DT_VCENTER); DeleteObject(font); } EndPaint(This->hwnd, &ps); }
void CBitmapFonts::Build(HDC hDC, char *FontName, int *pbase, int FontSize, CBitmapFontSettings *pSettings) { HFONT font; // Base of the font texture ID base = *pbase; SetSettings(pSettings); // Generate storage for 96 chars glGenLists(MaxFont); // Create/Load the font font = CreateFontA(FontSize*(-1),// Height Of Font 0, // Width Of Font 0, // Angle Of Escapement 0, // Orientation Angle /*FW_THIN*/FW_BOLD,// Font Weight FALSE, // Italic FALSE, // Underline FALSE, // Strikeout ANSI_CHARSET,// Character Set Identifier OUT_TT_PRECIS,// Output Precision CLIP_DEFAULT_PRECIS,// Clipping Precision ANTIALIASED_QUALITY,// Output Quality FF_DONTCARE|DEFAULT_PITCH,// Family And Pitch FontName);// Font Name // Selects The Font We Want SelectObject(hDC, font); // Builds 96 characters starting at character 32 (space) wglUseFontBitmaps(hDC, 32, MaxFont, base); *pbase += MaxFont; }
Font::Font(const ezString& fontName, int size, const HDC deviceContext) { HFONT font; HFONT oldfont; m_DisplayList = glGenLists(96); font = CreateFontA( size, 0, 0, 0, FW_REGULAR, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE|DEFAULT_PITCH, fontName.GetData()); oldfont = (HFONT)SelectObject(deviceContext, font); wglUseFontBitmaps(deviceContext, 32, 96, m_DisplayList); SelectObject(deviceContext, oldfont); DeleteObject(font); }
void updateFont() { if (g_font)DeleteObject(g_font); g_font = CreateFontA( g_textSize, 0, 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, 0, g_fontName); SelectObject(g_hmemdc, g_font); }
void __fastcall TMainForm::BookComboBoxDrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State) { TComboBox *c = (TComboBox*)Control; TRect rect, r; AnsiString s; HDC dc; HFONT font1, font2; HGDIOBJ old; TBook *b; b = (TBook*)(c->Items->Objects[Index]); r = rect = Rect; // dc = GetDC(Control->Handle); c->Canvas->FillRect(rect); dc = c->Canvas->Handle; font1 = CreateFontA(Font->Height, 0, 0, 0, 0, 0u, 0u, 0u, RUSSIAN_CHARSET, 0u, 0u, 0u, 0u, TEXT("Tahoma")); font2 = CreateFontA(Font->Height, 0, 0, 0, 0, 1u, 0u, 0u, RUSSIAN_CHARSET, 0u, 0u, 0u, 0u, TEXT("Tahoma")); // old = SelectObject(dc, font1); SetTextColor(dc, 0x00000000); rect = r; rect.Bottom -= 14; rect.left += 2; // SetBkMode(dc, TRANSPARENT); s = b->BookName; DrawTextA(dc, s.c_str(), s.Length(), &rect, DT_LEFT); rect = r; rect.Top += 14; rect.left += 10; // rect.bottom -= 2; SelectObject(dc, font2); // SetTextColor(dc, 0x0000ff00); s = b->BookAuthor; DrawTextA(dc, s.c_str(), s.Length(), &rect, DT_LEFT); SelectObject(dc, old); // ReleaseDC(c->Canvas, dc); DeleteObject(font1); DeleteObject(font2); }
void EmfPaintEngine::drawTextItem ( const QPointF & p, const QTextItem & textItem ) { setClipping(); SetBkMode( metaDC, TRANSPARENT ); QFont f = textItem.font(); QFontMetrics fm(f); HFONT wfont = CreateFontA(fm.height() - 1, fm.averageCharWidth(), 0, 0, 10*f.weight(), f.italic(), f.underline (), f.strikeOut(), DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, f.family().toAscii().data()); SelectObject( metaDC, wfont); QColor colour = painter()->pen().color(); SetTextColor( metaDC, RGB(colour.red(), colour.green(), colour.blue())); QString text = textItem.text(); int size = text.size(); QMatrix m = painter()->worldMatrix(); XFORM xf; xf.eM11 = m.m11(); xf.eM12 = m.m12(); xf.eM21 = m.m21(); xf.eM22 = m.m22(); xf.eDx = m.dx(); xf.eDy = m.dy(); SetWorldTransform(metaDC, &xf); #ifdef Q_WS_WIN wchar_t *wtext = (wchar_t *)malloc(size*sizeof(wchar_t)); if (!wtext){ qWarning("EmfEngine: Not enough memory in drawTextItem()."); return; } size = text.toWCharArray(wtext); TextOutW(metaDC, qRound(p.x()), qRound(p.y() - 0.85*fm.height()), wtext, size); free(wtext); #else TextOutA(metaDC, qRound(p.x()), qRound(p.y() - 0.85*fm.height()), text.toLocal8Bit().data(), size); #endif xf.eM11 = 1.0; xf.eM12 = 0.0; xf.eM21 = 0.0; xf.eM22 = 1.0; xf.eDx = 0.0; xf.eDy = 0.0; SetWorldTransform(metaDC, &xf); resetClipping(); DeleteObject(wfont); }
void KH::TextDrawer::SelectFont(int size, int charset, const char* face = "Arial") { fontName = std::string(face); fontSize = size; //创建指定字体 HFONT hFont = CreateFontA(size, 0, 0, 0, FW_MEDIUM, 0, 0, 0, charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, face ); //把创建的字体选入设备上下文,保存旧字体 HFONT hOldFont = (HFONT)SelectObject(wglGetCurrentDC(), hFont); }
void CodePreview::Register() { WNDCLASSA wndClass; memset(&wndClass, 0, sizeof(wndClass)); wndClass.lpfnWndProc = &WndProc; wndClass.hInstance = _AtlModule.GetResourceInstance(); wndClass.lpszClassName = s_className; RegisterClassA(&wndClass); s_normalFont = CreateFontA(-11, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, FIXED_PITCH|FF_DONTCARE, 0); s_boldFont = CreateFontA(-11, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, FIXED_PITCH|FF_DONTCARE, 0); HDC memDC = CreateCompatibleDC(0); SelectObject(memDC, s_normalFont); TEXTMETRIC metrics; GetTextMetrics(memDC, &metrics); DeleteDC(memDC); s_charWidth = metrics.tmAveCharWidth; s_lineHeight = metrics.tmHeight; }
void OPENGL_3D_ENGNIE::CreateCharaterShowList() { //set the charater size and type HFONT hFont = CreateFontA(24, 0, 0, 0, FW_MEDIUM, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Comic Sans MS"); HFONT hOldFont = (HFONT)SelectObject(wglGetCurrentDC(), hFont); DeleteObject(hOldFont); CharShowList = glGenLists(128); wglUseFontBitmaps(wglGetCurrentDC(), 0, 128, CharShowList); }
// Init //------------------------------------------------------------------------------ void OSFont::Init( uint32_t size, const char * fontFamily ) { #if defined( __WINDOWS__ ) m_Font = CreateFontA( size, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, DEFAULT_PITCH, fontFamily ); #else (void)size; (void)fontFamily; #endif }
/********************************************************* *NAME: fontCreate *AUTHOR: John Morrison *CREATION DATE: 3/1/99 *LAST MODIFIED: 29/4/00 *PURPOSE: * Loads Font * *ARGUMENTS: * appInst - Handle to the application (Required to * load bitmaps from resources) * appWnd - Main Window Handle (Required for clipper) *********************************************************/ bool fontSetup(HINSTANCE appInst, HWND appWnd) { bool returnValue; /* Value to return */ int nHeight; /* Height to make the font */ HDC tempDC; /* Temp DC */ BYTE zoomFactor; /* Scaling factor */ int height; /* Font height */ returnValue = TRUE; zoomFactor = windowGetZoomFactor(); if (zoomFactor == 1) { height = FONT_HEIGHT_NORMAL_ZOOM; } else { height = zoomFactor * FONT_HEIGHT; } tempDC = GetDC(appWnd); if (tempDC != NULL) { nHeight = fontPointToHeight(height, tempDC); hBoloFont = CreateFontA(nHeight, 0, 0, 0, FALSE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, FONT_NAME); DeleteDC(tempDC); } if (hBoloFont == NULL) { MessageBoxA(appWnd, langGetText(STR_FONTERR_NOCOURIERFONT), DIALOG_BOX_TITLE, MB_ICONEXCLAMATION); returnValue = FALSE; } tempDC = GetDC(appWnd); if (tempDC != NULL) { nHeight = fontPointToHeight((zoomFactor * TINY_FONT_HEIGHT), tempDC); hTinyFont = CreateFontA(nHeight, 0, 0, 0, FALSE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, FONT_NAME); DeleteDC(tempDC); } return returnValue; }
HFONT WINAPI CreateFontFromFileA(int cHeight, int cWidth, int cEscapement, int cOrientation, int cWeight, DWORD bItalic, DWORD bUnderline, DWORD bStrikeOut, DWORD iCharSet, DWORD iOutPrecision, DWORD iClipPrecision, DWORD iQuality, DWORD iPitchAndFamily, LPCSTR lpszFontName, LPCTSTR lpszFontRes) { HFONT hFont; if (AddFontResourceExA(lpszFontName, FR_PRIVATE, 0) == 0) return NULL; hFont = CreateFontA(cHeight, cWidth, cEscapement, cOrientation, cWeight, bItalic, bUnderline, bStrikeOut, iCharSet, iOutPrecision, iClipPrecision, iQuality, iPitchAndFamily, lpszFontRes); if (hFont == NULL) { RemoveFontResourceExA(lpszFontName, FR_PRIVATE, 0); } return hFont; }
void Renderer::CreateFonts() { HDC hdc = CreateCompatibleDC( NULL ); if( hdc == NULL ) return; INT nHeight = -MulDiv( 12, GetDeviceCaps( hdc, LOGPIXELSY ), 72 ); DeleteDC( hdc ); BOOL bBold = FALSE; BOOL bItalic = FALSE; g_hFont = CreateFontA( nHeight, 0, 0, 0, bBold ? FW_BOLD : FW_NORMAL, bItalic, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial" ); }
void Test_CreateFontA() { HFONT hFont; LOGFONTA logfonta; INT result; /* Test invalid font name */ hFont = CreateFontA(15, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, INVALIDFONT); ok(hFont != 0, "CreateFontA failed\n"); result = GetObjectA(hFont, sizeof(LOGFONTA), &logfonta); ok(result == sizeof(LOGFONTA), "result = %d", result); ok(memcmp(logfonta.lfFaceName, INVALIDFONT, strlen(INVALIDFONT)) == 0, "not equal\n"); ok(logfonta.lfWeight == FW_DONTCARE, "lfWeight=%ld\n", logfonta.lfWeight); }
void Ui::Init(HWND hWnd) { // Background HWND bg = CreateWindowEx(0, TEXT("static"), TEXT("ST_U"), (WS_CHILD | WS_VISIBLE | WS_TABSTOP), 0, 0, 700, 400, hWnd, NULL, m_inst, NULL); SetWindowText(bg, 0); // Progress m_progress = CreateWindowEx(0, PROGRESS_CLASS, NULL, WS_CHILD | WS_VISIBLE, 15, 320, 560, 20, hWnd, NULL, m_inst, NULL); SendMessage(m_progress, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); // Label m_label = CreateWindowEx(0, TEXT("static"), TEXT("ST_U"), WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 345, 260, 40, hWnd, NULL, m_inst, NULL); setText("Initializing..."); // Button m_btn = CreateWindowEx(NULL, TEXT("BUTTON"), TEXT("Cancel"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 585, 320, 95, 20, hWnd, (HMENU)IDB_CANCEL, NULL, NULL); // EditBox m_edit_box = CreateWindowEx(NULL, TEXT("EDIT"), TEXT(""), WS_CHILD|WS_VISIBLE|ES_MULTILINE|WS_VSCROLL|ES_READONLY | WS_BORDER, 15, 15, 665, 295, hWnd, NULL, m_inst, NULL); HDC hdc = GetDC(NULL); long lfHeight = -MulDiv(10, GetDeviceCaps(hdc, LOGPIXELSY), 72); ReleaseDC(NULL, hdc); HFONT hf = CreateFontA(lfHeight, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Courier New"); if(hf) SendMessage(m_edit_box, WM_SETFONT, (WPARAM)hf, TRUE); setChangelog("Downloading changelog..."); }
INT_PTR CALLBACK PromptDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_INITDIALOG: { PromptParams *params = (PromptParams*)lParam; ::SetWindowTextA(::GetDlgItem(hDlg, IDC_MESSAGE), params->message); ::SetFocus(::GetDlgItem(hDlg, IDC_BUTTON0)); SetWindowTextA(hDlg, params->title); HFONT hfont = CreateFontA(16, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, PROOF_QUALITY, FIXED_PITCH | FF_MODERN, "Courier New"); SendDlgItemMessage(hDlg, IDC_MESSAGE, WM_SETFONT, (WPARAM)hfont, MAKELPARAM(TRUE, 0)); break; } case WM_COMMAND: { int choiceNumber = LOWORD(wParam) - IDC_BUTTON0; if((choiceNumber >= 0) && (choiceNumber < 10)) { EndDialog(hDlg, choiceNumber); return TRUE; } } break; case WM_NCDESTROY: // Under SDL 1.2.6 we get a NCDESTROY message for no reason and the // window is immediately closed. This is here to debug the problem. (void)0; break; } return FALSE; }
void CLineComputeView::glSelectFont(int size, int charset, const char *face) { HFONT hFont = CreateFontA( size, //指定字高 0, //指定字宽 0, //指定角度(1/10度) 45, //指定字符的基线与x轴的角度(1/10度) FW_LIGHT, //指定字体的重量(FW_BOLD=700) 0, //指定是否斜体 0, //指定是否有下划线 0, //指定是否是StrikeOut字体 charset, OUT_DEFAULT_PRECIS, //指定输出精度 CLIP_DEFAULT_PRECIS,//指定裁剪精度 DEFAULT_QUALITY, //指定输出质量 DEFAULT_PITCH | FF_SWISS, //指定字体的定位和外观 face ); HFONT hOldFont = (HFONT)SelectObject(wglGetCurrentDC(), hFont); DeleteObject(hOldFont); }
void* Font::get_HFONT() { if(self->font) DeleteObject(self->font); self->font = CreateFontA( self->size, //字体的逻辑高度 0, //宽度 0, //与水平线的角度 0, //基线方位角度 FW_REGULAR, //字形:常规 FALSE, //字形:斜体 FALSE, //字形:下划线 self->is_bold, //字形:粗体 GB2312_CHARSET, //字符集 OUT_DEFAULT_PRECIS, //输出精度 CLIP_DEFAULT_PRECIS, //剪截精度 PROOF_QUALITY, //输出品质 DEFAULT_PITCH | FF_MODERN, //倾斜度 self->name //字体 ); return self->font; }
FontFace::FontFace( const std::string &faceName ) { #if defined( CAIRO_HAS_QUARTZ_FONT ) CFStringRef nameRef = CFStringCreateWithCString( kCFAllocatorDefault, faceName.c_str(), kCFStringEncodingUTF8 ); CGFontRef fontRef = CGFontCreateWithFontName( nameRef ); if( ! fontRef ) throw; mCairoFontFace = cairo_quartz_font_face_create_for_cgfont( fontRef ); // Cairo releases the CGFontRef CFRelease( nameRef ); #elif defined( CINDER_MSW ) HFONT hf; HDC hdc; long lfHeight; hdc = ::GetDC( NULL ); lfHeight = -MulDiv(12, GetDeviceCaps(hdc, LOGPIXELSY), 72); ReleaseDC( NULL, hdc ); hf = CreateFontA( lfHeight, 0, 0, 0, 0, TRUE, 0, 0, 0, 0, 0, 0, 0, faceName.c_str() ); mCairoFontFace = cairo_win32_font_face_create_for_hfont( hf ); #endif }
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; WCHAR sometext[] = {'C','h','i','n','a','1','2','3',0}; int len = (sizeof(sometext) / sizeof(WCHAR)) - 1; RECT rc = {0, 0, 100, 100}; SCRIPT_STRING_ANALYSIS ssa = NULL; HFONT hFont; switch (message) { case WM_CREATE: return 0; case WM_COMMAND: break; case WM_PAINT: BeginPaint(hwnd, &ps); hdc = GetDC(hwnd); hFont = CreateFontA(-32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Hiragino Sans GB W3"); SelectObject(hdc, hFont); ScriptStringAnalyse(hdc, sometext, len, len * 2, -1, SSA_GLYPHS|SSA_FALLBACK, 0, NULL, NULL, NULL, NULL, NULL, &ssa); ScriptStringOut(ssa, 10, 10, 0, &rc, 0, 0, FALSE); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }
bool CWin32WebView::init(const char *pszUrl, cocos2d::CCRect screenFrame, const char *pszTitle, const char *pszNormalImg, const char *pszPushImg) { bool bRet = false; while (1) { if (OleInitialize(NULL) != S_OK) { break; } HINSTANCE hInstance = GetModuleHandle( NULL ); WNDCLASS wc; // Windows Class Structure HWND hParent = CCDirector::sharedDirector()->getOpenGLView()->getHWnd(); float scale = CC_CONTENT_SCALE_FACTOR(); screenFrame.origin.x *= scale; screenFrame.origin.y *= scale; screenFrame.size.width *= scale; screenFrame.size.height *= scale; // Redraw On Size, And Own DC For Window. wc.style = CS_HREDRAW|CS_HREDRAW; wc.lpfnWndProc = _WindowProcContainer; // WndProc Handles Messages wc.cbClsExtra = 0; // No Extra Window Data wc.cbWndExtra = 0; // No Extra Window Data wc.hInstance = hInstance; // Set The Instance wc.hIcon = LoadIcon( NULL, IDI_WINLOGO ); // Load The Default Icon wc.hCursor = LoadCursor( NULL, IDC_ARROW ); // Load The Arrow Pointer wc.hbrBackground = NULL; // No Background Required For GL wc.lpszMenuName = NULL; // We Don't Want A Menu wc.lpszClassName = WINDOW_CLASS_CONTAINER; wc.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(86, 49, 10)); if(!RegisterClass(&wc)) { break; } m_hContainer = CreateWindowEx( WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, // Extended Style For The Window WINDOW_CLASS_CONTAINER, // Class Name NULL, // Window Title WS_CHILD, // Defined Window Style (int)screenFrame.origin.x, (int)screenFrame.origin.y, // Window Position (int)screenFrame.size.width, // Window Width (int)screenFrame.size.height, // Window Height hParent, // No Parent Window (HMENU)ID_BUTTON, // No Menu hInstance, // Instance NULL ); if(m_hContainer == NULL) { break; } screenFrame.origin.y = 0; screenFrame.origin.x = 0; // web view if (pszTitle && strlen(pszTitle) > 0) { int width, height; HBITMAP hNormal = bitmapWithPath(pszNormalImg, width, height); screenFrame.origin.y += height; screenFrame.size.height -= height; HWND hButton = CreateWindowA("Button", "Hello", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | BS_BITMAP | BS_FLAT , screenFrame.size.width - width,0, width, height, m_hContainer, (HMENU)ID_BUTTON, hInstance, NULL); LRESULT lr = SendMessage(hButton,BM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hNormal ); int nFontHeight = 18 * scale; wchar_t* pszTemp = CharToWChar(pszTitle, CP_UTF8); HWND hStatic = CreateWindow(TEXT("Static"), LPCWSTR(pszTemp), WS_CHILD | WS_VISIBLE | SS_CENTER, (screenFrame.size.width - 200)/2, (height - nFontHeight)/2, 200,nFontHeight, m_hContainer, 0, hInstance, 0); delete []pszTemp; if (NULL == hStatic) { break; } HFONT hFont= CreateFontA (nFontHeight, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Arial"); if (hFont) { SendMessage (hStatic, WM_SETFONT, WPARAM (hFont), TRUE); } } wc.style = CS_HREDRAW|CS_HREDRAW; wc.lpfnWndProc = _WindowProcWebView; // WndProc Handles Messages wc.cbClsExtra = 0; // No Extra Window Data wc.cbWndExtra = 0; // No Extra Window Data wc.hInstance = hInstance; // Set The Instance wc.hIcon = LoadIcon( NULL, IDI_WINLOGO ); // Load The Default Icon wc.hCursor = LoadCursor( NULL, IDC_ARROW ); // Load The Arrow Pointer wc.hbrBackground = NULL; // No Background Required For GL wc.lpszMenuName = NULL; // We Don't Want A Menu wc.lpszClassName = WINDOW_CLASS_WEBVIEW; if(!RegisterClass(&wc)) { break; } m_hWebView = CreateWindowEx( WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, // Extended Style For The Window WINDOW_CLASS_WEBVIEW, // Class Name NULL, // Window Title WS_CHILD, // Defined Window Style (int)screenFrame.origin.x, (int)screenFrame.origin.y, // Window Position (int)screenFrame.size.width, // Window Width (int)screenFrame.size.height, // Window Height m_hContainer, // No Parent Window NULL, // No Menu hInstance, // Instance NULL ); if(m_hWebView == NULL) { break; } wchar_t* pszTemp = CharToWChar(pszUrl, CP_UTF8); DisplayHTMLPage(m_hWebView, pszTemp); delete []pszTemp; ShowWindow(m_hWebView, SW_SHOW); UpdateWindow(m_hWebView); ShowWindow(m_hContainer, SW_SHOW); UpdateWindow(m_hContainer); bRet = true; break; } if (!bRet) { close(); OleUninitialize(); } return bRet; }
static BOOL CALLBACK DlgProcLogOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { static HBRUSH hBkgColourBrush; switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); switch (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_LOADHISTORY, SRMSGDEFSET_LOADHISTORY)) { case LOADHISTORY_UNREAD: CheckDlgButton(hwndDlg, IDC_LOADUNREAD, BST_CHECKED); break; case LOADHISTORY_COUNT: CheckDlgButton(hwndDlg, IDC_LOADCOUNT, BST_CHECKED); EnableWindow(GetDlgItem(hwndDlg, IDC_LOADCOUNTN), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_LOADCOUNTSPIN), TRUE); break; case LOADHISTORY_TIME: CheckDlgButton(hwndDlg, IDC_LOADTIME, BST_CHECKED); EnableWindow(GetDlgItem(hwndDlg, IDC_LOADTIMEN), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_LOADTIMESPIN), TRUE); EnableWindow(GetDlgItem(hwndDlg, IDC_STMINSOLD), TRUE); break; } SendDlgItemMessage(hwndDlg, IDC_LOADCOUNTSPIN, UDM_SETRANGE, 0, MAKELONG(100, 0)); SendDlgItemMessage(hwndDlg, IDC_LOADCOUNTSPIN, UDM_SETPOS, 0, DBGetContactSettingWord(NULL, SRMMMOD, SRMSGSET_LOADCOUNT, SRMSGDEFSET_LOADCOUNT)); SendDlgItemMessage(hwndDlg, IDC_LOADTIMESPIN, UDM_SETRANGE, 0, MAKELONG(12 * 60, 0)); SendDlgItemMessage(hwndDlg, IDC_LOADTIMESPIN, UDM_SETPOS, 0, DBGetContactSettingWord(NULL, SRMMMOD, SRMSGSET_LOADTIME, SRMSGDEFSET_LOADTIME)); CheckDlgButton(hwndDlg, IDC_SHOWLOGICONS, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWLOGICONS, SRMSGDEFSET_SHOWLOGICONS)); CheckDlgButton(hwndDlg, IDC_SHOWNAMES, !DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_HIDENAMES, SRMSGDEFSET_HIDENAMES)); CheckDlgButton(hwndDlg, IDC_SHOWTIMES, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWTIME, SRMSGDEFSET_SHOWTIME)); CheckDlgButton(hwndDlg, IDC_SHOWSECONDS, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWSECONDS, SRMSGDEFSET_SHOWSECONDS)); EnableWindow(GetDlgItem(hwndDlg, IDC_SHOWSECONDS), IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); EnableWindow(GetDlgItem(hwndDlg, IDC_SHOWDATES), IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); CheckDlgButton(hwndDlg, IDC_SHOWDATES, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWDATE, SRMSGDEFSET_SHOWDATE)); CheckDlgButton(hwndDlg, IDC_USELONGDATE, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_USELONGDATE, SRMSGDEFSET_USELONGDATE)); CheckDlgButton(hwndDlg, IDC_USERELATIVEDATE, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_USERELATIVEDATE, SRMSGDEFSET_USERELATIVEDATE)); EnableWindow(GetDlgItem(hwndDlg, IDC_USELONGDATE), IsDlgButtonChecked(hwndDlg, IDC_SHOWDATES) && IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); EnableWindow(GetDlgItem(hwndDlg, IDC_USERELATIVEDATE), IsDlgButtonChecked(hwndDlg, IDC_SHOWDATES) && IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); // if (!ServiceExists(MS_IEVIEW_WINDOW)) { // EnableWindow(GetDlgItem(hwndDlg, IDC_USEIEVIEW), FALSE); // } // CheckDlgButton(hwndDlg, IDC_USEIEVIEW, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_USEIEVIEW, SRMSGDEFSET_USEIEVIEW)); CheckDlgButton(hwndDlg, IDC_GROUPMESSAGES, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_GROUPMESSAGES, SRMSGDEFSET_GROUPMESSAGES)); CheckDlgButton(hwndDlg, IDC_MARKFOLLOWUPS, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_MARKFOLLOWUPS, SRMSGDEFSET_MARKFOLLOWUPS)); CheckDlgButton(hwndDlg, IDC_MESSAGEONNEWLINE, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_MESSAGEONNEWLINE, SRMSGDEFSET_MESSAGEONNEWLINE)); CheckDlgButton(hwndDlg, IDC_DRAWLINES, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_DRAWLINES, SRMSGDEFSET_DRAWLINES)); EnableWindow(GetDlgItem(hwndDlg, IDC_LINECOLOUR), IsDlgButtonChecked(hwndDlg, IDC_DRAWLINES)); EnableWindow(GetDlgItem(hwndDlg, IDC_MARKFOLLOWUPS), IsDlgButtonChecked(hwndDlg, IDC_GROUPMESSAGES)); CheckDlgButton(hwndDlg, IDC_SHOWSTATUSCHANGES, DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWSTATUSCH, SRMSGDEFSET_SHOWSTATUSCH)); SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_SETCOLOUR, 0, DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR)); SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_SETDEFAULTCOLOUR, 0, SRMSGDEFSET_BKGCOLOUR); SendDlgItemMessage(hwndDlg, IDC_BKGINPUT, CPM_SETCOLOUR, 0, DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_INPUTBKGCOLOUR, SRMSGDEFSET_INPUTBKGCOLOUR)); SendDlgItemMessage(hwndDlg, IDC_BKGINPUT, CPM_SETDEFAULTCOLOUR, 0, SRMSGDEFSET_INPUTBKGCOLOUR); SendDlgItemMessage(hwndDlg, IDC_BKGINCOMING, CPM_SETCOLOUR, 0, DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_INCOMINGBKGCOLOUR, SRMSGDEFSET_INCOMINGBKGCOLOUR)); SendDlgItemMessage(hwndDlg, IDC_BKGINCOMING, CPM_SETDEFAULTCOLOUR, 0, SRMSGDEFSET_INCOMINGBKGCOLOUR); SendDlgItemMessage(hwndDlg, IDC_BKGOUTGOING, CPM_SETCOLOUR, 0, DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_OUTGOINGBKGCOLOUR, SRMSGDEFSET_OUTGOINGBKGCOLOUR)); SendDlgItemMessage(hwndDlg, IDC_BKGOUTGOING, CPM_SETDEFAULTCOLOUR, 0, SRMSGDEFSET_OUTGOINGBKGCOLOUR); SendDlgItemMessage(hwndDlg, IDC_LINECOLOUR, CPM_SETCOLOUR, 0, DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_LINECOLOUR, SRMSGDEFSET_LINECOLOUR)); hBkgColourBrush = CreateSolidBrush(SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_GETCOLOUR, 0, 0)); { int i; LOGFONTA lf; for (i = 0; i < sizeof(fontOptionsList) / sizeof(fontOptionsList[0]); i++) { LoadMsgDlgFont(i, &lf, &fontOptionsList[i].colour); lstrcpyA(fontOptionsList[i].szFace, lf.lfFaceName); fontOptionsList[i].size = (char) lf.lfHeight; fontOptionsList[i].style = (lf.lfWeight >= FW_BOLD ? FONTF_BOLD : 0) | (lf.lfItalic ? FONTF_ITALIC : 0); fontOptionsList[i].charset = lf.lfCharSet; //I *think* some OSs will fail LB_ADDSTRING if lParam==0 SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_ADDSTRING, 0, i + 1); } SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_SETSEL, TRUE, 0); SendDlgItemMessage(hwndDlg, IDC_FONTCOLOUR, CPM_SETCOLOUR, 0, fontOptionsList[0].colour); SendDlgItemMessage(hwndDlg, IDC_FONTCOLOUR, CPM_SETDEFAULTCOLOUR, 0, fontOptionsList[0].defColour); } return TRUE; case WM_CTLCOLORLISTBOX: SetBkColor((HDC) wParam, SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_GETCOLOUR, 0, 0)); return (BOOL) hBkgColourBrush; case WM_MEASUREITEM: { MEASUREITEMSTRUCT *mis = (MEASUREITEMSTRUCT *) lParam; HFONT hFont, hoFont; HDC hdc; SIZE fontSize; int iItem = mis->itemData - 1; hFont = CreateFontA(fontOptionsList[iItem].size, 0, 0, 0, fontOptionsList[iItem].style & FONTF_BOLD ? FW_BOLD : FW_NORMAL, fontOptionsList[iItem].style & FONTF_ITALIC ? 1 : 0, 0, 0, fontOptionsList[iItem].charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, fontOptionsList[iItem].szFace); hdc = GetDC(GetDlgItem(hwndDlg, mis->CtlID)); hoFont = (HFONT) SelectObject(hdc, hFont); GetTextExtentPoint32A(hdc, fontOptionsList[iItem].szDescr, lstrlenA(fontOptionsList[iItem].szDescr), &fontSize); SelectObject(hdc, hoFont); ReleaseDC(GetDlgItem(hwndDlg, mis->CtlID), hdc); DeleteObject(hFont); mis->itemWidth = fontSize.cx; mis->itemHeight = fontSize.cy; return TRUE; } case WM_DRAWITEM: { DRAWITEMSTRUCT *dis = (DRAWITEMSTRUCT *) lParam; HFONT hFont, hoFont; HBRUSH hBrush; char *pszText; int iItem = dis->itemData - 1; COLORREF color = (COLORREF) SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_GETCOLOUR, 0, 0); switch (iItem) { case 1: case 5: case 6: case 7: case 9: color = (COLORREF) SendDlgItemMessage(hwndDlg, IDC_BKGINCOMING, CPM_GETCOLOUR, 0, 0); break; case 0: case 2: case 3: case 4: color = (COLORREF) SendDlgItemMessage(hwndDlg, IDC_BKGOUTGOING, CPM_GETCOLOUR, 0, 0); break; case 8: color = (COLORREF) SendDlgItemMessage(hwndDlg, IDC_BKGINPUT, CPM_GETCOLOUR, 0, 0); break; } hBrush = CreateSolidBrush(color); hFont = CreateFontA(fontOptionsList[iItem].size, 0, 0, 0, fontOptionsList[iItem].style & FONTF_BOLD ? FW_BOLD : FW_NORMAL, fontOptionsList[iItem].style & FONTF_ITALIC ? 1 : 0, 0, 0, fontOptionsList[iItem].charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, fontOptionsList[iItem].szFace); hoFont = (HFONT) SelectObject(dis->hDC, hFont); SetBkMode(dis->hDC, TRANSPARENT); FillRect(dis->hDC, &dis->rcItem, hBrush); if (dis->itemState & ODS_SELECTED) FrameRect(dis->hDC, &dis->rcItem, GetSysColorBrush(COLOR_HIGHLIGHT)); SetTextColor(dis->hDC, fontOptionsList[iItem].colour); pszText = Translate(fontOptionsList[iItem].szDescr); TextOutA(dis->hDC, dis->rcItem.left, dis->rcItem.top, pszText, lstrlenA(pszText)); SelectObject(dis->hDC, hoFont); DeleteObject(hFont); DeleteObject(hBrush); return TRUE; } case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_LOADUNREAD: case IDC_LOADCOUNT: case IDC_LOADTIME: EnableWindow(GetDlgItem(hwndDlg, IDC_LOADCOUNTN), IsDlgButtonChecked(hwndDlg, IDC_LOADCOUNT)); EnableWindow(GetDlgItem(hwndDlg, IDC_LOADCOUNTSPIN), IsDlgButtonChecked(hwndDlg, IDC_LOADCOUNT)); EnableWindow(GetDlgItem(hwndDlg, IDC_LOADTIMEN), IsDlgButtonChecked(hwndDlg, IDC_LOADTIME)); EnableWindow(GetDlgItem(hwndDlg, IDC_LOADTIMESPIN), IsDlgButtonChecked(hwndDlg, IDC_LOADTIME)); EnableWindow(GetDlgItem(hwndDlg, IDC_STMINSOLD), IsDlgButtonChecked(hwndDlg, IDC_LOADTIME)); break; case IDC_SHOWTIMES: EnableWindow(GetDlgItem(hwndDlg, IDC_SHOWSECONDS), IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); EnableWindow(GetDlgItem(hwndDlg, IDC_SHOWDATES), IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); case IDC_SHOWDATES: EnableWindow(GetDlgItem(hwndDlg, IDC_USELONGDATE), IsDlgButtonChecked(hwndDlg, IDC_SHOWDATES) && IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); EnableWindow(GetDlgItem(hwndDlg, IDC_USERELATIVEDATE), IsDlgButtonChecked(hwndDlg, IDC_SHOWDATES) && IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); break; case IDC_GROUPMESSAGES: EnableWindow(GetDlgItem(hwndDlg, IDC_MARKFOLLOWUPS), IsDlgButtonChecked(hwndDlg, IDC_GROUPMESSAGES)); break; case IDC_DRAWLINES: EnableWindow(GetDlgItem(hwndDlg, IDC_LINECOLOUR), IsDlgButtonChecked(hwndDlg, IDC_DRAWLINES)); break; case IDC_BKGCOLOUR: DeleteObject(hBkgColourBrush); hBkgColourBrush = CreateSolidBrush(SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_GETCOLOUR, 0, 0)); case IDC_BKGINCOMING: case IDC_BKGOUTGOING: case IDC_BKGINPUT: InvalidateRect(GetDlgItem(hwndDlg, IDC_FONTLIST), NULL, TRUE); break; case IDC_FONTLIST: if (HIWORD(wParam) == LBN_SELCHANGE) { if (SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETSELCOUNT, 0, 0) > 1) { SendDlgItemMessage(hwndDlg, IDC_FONTCOLOUR, CPM_SETCOLOUR, 0, GetSysColor(COLOR_3DFACE)); SendDlgItemMessage(hwndDlg, IDC_FONTCOLOUR, CPM_SETDEFAULTCOLOUR, 0, GetSysColor(COLOR_WINDOWTEXT)); } else { int i = SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETITEMDATA, SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETCURSEL, 0, 0), 0) - 1; SendDlgItemMessage(hwndDlg, IDC_FONTCOLOUR, CPM_SETCOLOUR, 0, fontOptionsList[i].colour); SendDlgItemMessage(hwndDlg, IDC_FONTCOLOUR, CPM_SETDEFAULTCOLOUR, 0, fontOptionsList[i].defColour); } } if (HIWORD(wParam) != LBN_DBLCLK) return TRUE; //fall through case IDC_CHOOSEFONT: { CHOOSEFONTA cf = { 0 }; LOGFONTA lf = { 0 }; int i = SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETITEMDATA, SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETCURSEL, 0, 0), 0) - 1; lf.lfHeight = fontOptionsList[i].size; lf.lfWeight = fontOptionsList[i].style & FONTF_BOLD ? FW_BOLD : FW_NORMAL; lf.lfItalic = fontOptionsList[i].style & FONTF_ITALIC ? 1 : 0; lf.lfCharSet = fontOptionsList[i].charset; lf.lfOutPrecision = OUT_DEFAULT_PRECIS; lf.lfClipPrecision = CLIP_DEFAULT_PRECIS; lf.lfQuality = DEFAULT_QUALITY; lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; lstrcpyA(lf.lfFaceName, fontOptionsList[i].szFace); cf.lStructSize = sizeof(cf); cf.hwndOwner = hwndDlg; cf.lpLogFont = &lf; cf.Flags = CF_FORCEFONTEXIST | CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS; if (ChooseFontA(&cf)) { int selItems[sizeof(fontOptionsList) / sizeof(fontOptionsList[0])]; int sel, selCount; selCount = SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETSELITEMS, sizeof(fontOptionsList) / sizeof(fontOptionsList[0]), (LPARAM) selItems); for (sel = 0; sel < selCount; sel++) { i = SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETITEMDATA, selItems[sel], 0) - 1; fontOptionsList[i].size = (char) lf.lfHeight; fontOptionsList[i].style = (lf.lfWeight >= FW_BOLD ? FONTF_BOLD : 0) | (lf.lfItalic ? FONTF_ITALIC : 0); fontOptionsList[i].charset = lf.lfCharSet; lstrcpyA(fontOptionsList[i].szFace, lf.lfFaceName); { MEASUREITEMSTRUCT mis = { 0 }; mis.CtlID = IDC_FONTLIST; mis.itemData = i + 1; SendMessage(hwndDlg, WM_MEASUREITEM, 0, (LPARAM) & mis); SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_SETITEMHEIGHT, selItems[sel], mis.itemHeight); } } InvalidateRect(GetDlgItem(hwndDlg, IDC_FONTLIST), NULL, TRUE); break; } return TRUE; } case IDC_FONTCOLOUR: { int selItems[sizeof(fontOptionsList) / sizeof(fontOptionsList[0])]; int sel, selCount, i; selCount = SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETSELITEMS, sizeof(fontOptionsList) / sizeof(fontOptionsList[0]), (LPARAM) selItems); for (sel = 0; sel < selCount; sel++) { i = SendDlgItemMessage(hwndDlg, IDC_FONTLIST, LB_GETITEMDATA, selItems[sel], 0) - 1; fontOptionsList[i].colour = SendDlgItemMessage(hwndDlg, IDC_FONTCOLOUR, CPM_GETCOLOUR, 0, 0); } InvalidateRect(GetDlgItem(hwndDlg, IDC_FONTLIST), NULL, FALSE); break; } case IDC_LOADCOUNTN: case IDC_LOADTIMEN: if (HIWORD(wParam) != EN_CHANGE || (HWND) lParam != GetFocus()) return TRUE; break; } SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; case WM_NOTIFY: switch (((LPNMHDR) lParam)->idFrom) { case 0: switch (((LPNMHDR) lParam)->code) { case PSN_APPLY: if (IsDlgButtonChecked(hwndDlg, IDC_LOADCOUNT)) DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_LOADHISTORY, LOADHISTORY_COUNT); else if (IsDlgButtonChecked(hwndDlg, IDC_LOADTIME)) DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_LOADHISTORY, LOADHISTORY_TIME); else DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_LOADHISTORY, LOADHISTORY_UNREAD); DBWriteContactSettingWord(NULL, SRMMMOD, SRMSGSET_LOADCOUNT, (WORD) SendDlgItemMessage(hwndDlg, IDC_LOADCOUNTSPIN, UDM_GETPOS, 0, 0)); DBWriteContactSettingWord(NULL, SRMMMOD, SRMSGSET_LOADTIME, (WORD) SendDlgItemMessage(hwndDlg, IDC_LOADTIMESPIN, UDM_GETPOS, 0, 0)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWLOGICONS, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_SHOWLOGICONS)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_HIDENAMES, (BYTE) ! IsDlgButtonChecked(hwndDlg, IDC_SHOWNAMES)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWTIME, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_SHOWTIMES)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWSECONDS, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_SHOWSECONDS)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWDATE, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_SHOWDATES)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_USELONGDATE, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_USELONGDATE)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_USERELATIVEDATE, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_USERELATIVEDATE)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWSTATUSCH, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_SHOWSTATUSCHANGES)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_GROUPMESSAGES, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_GROUPMESSAGES)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_MARKFOLLOWUPS, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_MARKFOLLOWUPS)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_MESSAGEONNEWLINE, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_MESSAGEONNEWLINE)); DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_DRAWLINES, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_DRAWLINES)); DBWriteContactSettingDword(NULL, SRMMMOD, SRMSGSET_BKGCOLOUR, SendDlgItemMessage(hwndDlg, IDC_BKGCOLOUR, CPM_GETCOLOUR, 0, 0)); DBWriteContactSettingDword(NULL, SRMMMOD, SRMSGSET_INPUTBKGCOLOUR, SendDlgItemMessage(hwndDlg, IDC_BKGINPUT, CPM_GETCOLOUR, 0, 0)); DBWriteContactSettingDword(NULL, SRMMMOD, SRMSGSET_INCOMINGBKGCOLOUR, SendDlgItemMessage(hwndDlg, IDC_BKGINCOMING, CPM_GETCOLOUR, 0, 0)); DBWriteContactSettingDword(NULL, SRMMMOD, SRMSGSET_OUTGOINGBKGCOLOUR, SendDlgItemMessage(hwndDlg, IDC_BKGOUTGOING, CPM_GETCOLOUR, 0, 0)); DBWriteContactSettingDword(NULL, SRMMMOD, SRMSGSET_LINECOLOUR, SendDlgItemMessage(hwndDlg, IDC_LINECOLOUR, CPM_GETCOLOUR, 0, 0)); // DBWriteContactSettingByte(NULL, SRMMMOD, SRMSGSET_USEIEVIEW, (BYTE) IsDlgButtonChecked(hwndDlg, IDC_USEIEVIEW)); { int i; char str[32]; for (i = 0; i < sizeof(fontOptionsList) / sizeof(fontOptionsList[0]); i++) { wsprintfA(str, "SRMFont%d", i); DBWriteContactSettingString(NULL, SRMMMOD, str, fontOptionsList[i].szFace); wsprintfA(str, "SRMFont%dSize", i); DBWriteContactSettingByte(NULL, SRMMMOD, str, fontOptionsList[i].size); wsprintfA(str, "SRMFont%dSty", i); DBWriteContactSettingByte(NULL, SRMMMOD, str, fontOptionsList[i].style); wsprintfA(str, "SRMFont%dSet", i); DBWriteContactSettingByte(NULL, SRMMMOD, str, fontOptionsList[i].charset); wsprintfA(str, "SRMFont%dCol", i); DBWriteContactSettingDword(NULL, SRMMMOD, str, fontOptionsList[i].colour); } } FreeMsgLogIcons(); LoadMsgLogIcons(); ReloadGlobals(); WindowList_Broadcast(g_dat->hMessageWindowList, DM_OPTIONSAPPLIED, 0, 0); return TRUE; } break; } break; case WM_DESTROY: DeleteObject(hBkgColourBrush); break; } return FALSE; }
static void test_height(void) { LOGFONTA lf; HFONT hFont, hFontSm; RECT rc1, rc2; HWND hwndStatus = CreateWindowA(SUBCLASS_NAME, NULL, WS_CHILD|WS_VISIBLE, 0, 0, 300, 20, g_hMainWnd, NULL, NULL, NULL); HDC hdc; GetClientRect(hwndStatus, &rc1); hFont = CreateFontA(32, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, "Tahoma"); g_wmsize_count = 0; SendMessageA(hwndStatus, WM_SETFONT, (WPARAM)hFont, TRUE); if (!g_wmsize_count) { skip("Status control not resized in win95, skipping broken tests.\n"); return; } ok(g_wmsize_count > 0, "WM_SETFONT should issue WM_SIZE\n"); GetClientRect(hwndStatus, &rc2); expect_rect(0, 0, 672, 42, rc2); /* GetTextMetrics returns invalid tmInternalLeading for this font */ g_wmsize_count = 0; SendMessageA(hwndStatus, WM_SETFONT, (WPARAM)hFont, TRUE); ok(g_wmsize_count > 0, "WM_SETFONT should issue WM_SIZE\n"); GetClientRect(hwndStatus, &rc2); expect_rect(0, 0, 672, 42, rc2); /* minheight < fontsize - no effects*/ SendMessageA(hwndStatus, SB_SETMINHEIGHT, 12, 0); SendMessageA(hwndStatus, WM_SIZE, 0, 0); GetClientRect(hwndStatus, &rc2); expect_rect(0, 0, 672, 42, rc2); /* minheight > fontsize - has an effect after WM_SIZE */ SendMessageA(hwndStatus, SB_SETMINHEIGHT, 60, 0); GetClientRect(hwndStatus, &rc2); expect_rect(0, 0, 672, 42, rc2); SendMessageA(hwndStatus, WM_SIZE, 0, 0); GetClientRect(hwndStatus, &rc2); expect_rect(0, 0, 672, 62, rc2); /* font changed to smaller than minheight - has an effect */ SendMessageA(hwndStatus, SB_SETMINHEIGHT, 30, 0); expect_rect(0, 0, 672, 62, rc2); SendMessageA(hwndStatus, WM_SIZE, 0, 0); GetClientRect(hwndStatus, &rc2); expect_rect(0, 0, 672, 42, rc2); hFontSm = CreateFontA(9, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, "Tahoma"); SendMessageA(hwndStatus, WM_SETFONT, (WPARAM)hFontSm, TRUE); GetClientRect(hwndStatus, &rc2); expect_rect(0, 0, 672, 32, rc2); /* test the height formula */ ZeroMemory(&lf, sizeof(lf)); SendMessageA(hwndStatus, SB_SETMINHEIGHT, 0, 0); hdc = GetDC(NULL); /* used only for some fonts (tahoma as example) */ g_ysize = GetSystemMetrics(SM_CYSIZE) + 2; if (g_ysize & 1) g_ysize--; /* The min height is always even */ g_dpisize = MulDiv(18, GetDeviceCaps(hdc, LOGPIXELSY), 96) + 2; if (g_dpisize & 1) g_dpisize--; /* The min height is always even */ trace("dpi=%d (min height: %d or %d) SM_CYSIZE: %d\n", GetDeviceCaps(hdc, LOGPIXELSY), g_ysize, g_dpisize, GetSystemMetrics(SM_CYSIZE)); EnumFontFamiliesExA(hdc, &lf, (FONTENUMPROCA)check_height_family_enumproc, (LPARAM)hwndStatus, 0); ReleaseDC(NULL, hdc); DestroyWindow(hwndStatus); DeleteObject(hFont); DeleteObject(hFontSm); }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { WNDCLASS wc; MSG msg; HWND hWnd; hInst = hInstance; #ifdef _GetCursorInfo GetCursorInfo = (GETCURSORINFO)GetProcAddress(GetModuleHandleW(L"user32.dll"), "GetCursorInfo"); #endif wc.lpszClassName = "IconTestClass"; wc.lpfnWndProc = MainWndProc; wc.style = CS_VREDRAW | CS_HREDRAW; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, (LPCTSTR)IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, (LPCTSTR)IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; if (RegisterClass(&wc) == 0) { DbgPrint("RegisterClass failed (last error 0x%X)\n", GetLastError()); return(1); } hWnd = CreateWindow("IconTestClass", "Icon Test", WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, 480, 480, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { DbgPrint("CreateWindow failed (last error 0x%X)\n", GetLastError()); return(1); } tf = CreateFontA(14,0, 0, TA_BASELINE, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Timmons"); ShowWindow(hWnd, nCmdShow); SetTimer(hWnd, 1, 1000, NULL); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { WNDCLASS wc; MSG msg; HWND hWnd; HWND hbtn[26]; wc.lpszClassName = "ButtonTest"; wc.lpfnWndProc = MainWndProc; wc.style = CS_VREDRAW | CS_HREDRAW; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, (LPCTSTR)IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, (LPCTSTR)IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; if (RegisterClass(&wc) == 0) { fprintf(stderr, "RegisterClass failed (last error 0x%lX)\n", GetLastError()); return(1); } hWnd = CreateWindow("ButtonTest", "Button Test", WS_OVERLAPPEDWINDOW, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { fprintf(stderr, "CreateWindow failed (last error 0x%lX)\n", GetLastError()); return(1); } tf = CreateFontA(14, 0, 0, TA_BASELINE, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Timmons"); ShowWindow(hWnd, nCmdShow); hbtn[0] = CreateWindow( "BUTTON","BS_DEFPUSHBUTTON",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 10, 10, 200, 40, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[1] = CreateWindow( "BUTTON","BS_3STATE",WS_VISIBLE | WS_CHILD | BS_3STATE, 10, 60, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[2] = CreateWindow( "BUTTON","BS_AUTO3STATE",WS_VISIBLE | WS_CHILD | BS_AUTO3STATE, 10, 90, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[3] = CreateWindow( "BUTTON","BS_AUTOCHECKBOX",WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, 10, 120, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[4] = CreateWindow( "BUTTON","BS_AUTORADIOBUTTON",WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON, 10, 150, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[5] = CreateWindow( "BUTTON","BS_CHECKBOX",WS_VISIBLE | WS_CHILD | BS_CHECKBOX, 10, 180, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[6] = CreateWindow( "BUTTON","BS_GROUPBOX",WS_VISIBLE | WS_CHILD | BS_GROUPBOX, 10, 210, 200, 80, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[7] = CreateWindow( "BUTTON","BS_PUSHBUTTON",WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 20, 230, 180, 30, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[8] = CreateWindow( "BUTTON","BS_RADIOBUTTON",WS_VISIBLE | WS_CHILD | BS_RADIOBUTTON, 10, 300, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[9] = CreateWindow( "BUTTON","BS_AUTORADIOBUTTON",WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON, 220, 160, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[10] = CreateWindow( "BUTTON","BS_DEFPUSHBUTTON|BS_BOTTOM",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | BS_BOTTOM, 220, 10, 250, 40, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[11] = CreateWindow( "BUTTON","BS_DEFPUSHBUTTON|BS_LEFT",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | BS_LEFT, 480, 10, 250, 40, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[12] = CreateWindow( "BUTTON","BS_DEFPUSHBUTTON|BS_RIGHT|BS_MULTILINE",WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | BS_RIGHT |BS_MULTILINE, 740, 10, 150, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[13] = CreateWindow( "BUTTON","BS_AUTORADIOBUTTON|BS_TOP",WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON | BS_TOP, 220, 60, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); // Other Combinations hbtn[14] = CreateWindow( "BUTTON","BS_AUTORADIOBUTTON|BS_BOTTOM|BS_MULTILINE",WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON | BS_BOTTOM | BS_MULTILINE, 480, 60, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[15] = CreateWindow( "BUTTON","BS_AUTORADIOBUTTON|BS_LEFT",WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON | BS_LEFT, 740, 80, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[16] = CreateWindow( "BUTTON","BS_AUTORADIOBUTTON|BS_RIGHT|BS_TOP",WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON | BS_RIGHT | BS_TOP, 220, 130, 200, 20, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[17] = CreateWindow( "BUTTON","BS_AUTORADIOBUTTON|BS_TOP|BS_MULTILINE",WS_VISIBLE | WS_CHILD | BS_AUTORADIOBUTTON | BS_TOP| BS_MULTILINE, 480, 130, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[18] = CreateWindow( "BUTTON","BS_AUTOCHECKBOX|BS_BOTTOM|BS_MULTILINE",WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX | BS_BOTTOM | BS_MULTILINE, 740, 130, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[19] = CreateWindow( "BUTTON","BS_AUTOCHECKBOX|BS_TOP|BS_MULTILINE",WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE, 480, 190, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[20] = CreateWindow( "BUTTON","BS_AUTOCHECKBOX|BS_LEFT|BS_MULTILINE",WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX | BS_LEFT | BS_MULTILINE, 220, 230, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[21] = CreateWindow( "BUTTON","BS_AUTOCHECKBOX|BS_RIGHT|BS_MULTILINE",WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX | BS_RIGHT | BS_MULTILINE, 480, 240, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[22] = CreateWindow( "BUTTON","BS_GROUPBOX|BS_TOP",WS_VISIBLE | WS_CHILD | BS_GROUPBOX | BS_TOP, 10, 340, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[23] = CreateWindow( "BUTTON","BS_GROUPBOX|BS_BOTTOM",WS_VISIBLE | WS_CHILD | BS_GROUPBOX | BS_BOTTOM, 10, 410, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[24] = CreateWindow( "BUTTON","BS_GROUPBOXBOX|BS_LEFT",WS_VISIBLE | WS_CHILD | BS_GROUPBOX | BS_LEFT, 520, 340, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); hbtn[25] = CreateWindow( "BUTTON","BS_GROUPBOX|BS_RIGHT|BS_BOTTOM",WS_VISIBLE | WS_CHILD | BS_GROUPBOX | BS_BOTTOM | BS_RIGHT, 300, 340, 200, 60, hWnd, NULL, (HINSTANCE) GetWindowLongPtr(hWnd, GWL_HINSTANCE),NULL); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } DeleteObject(tf); return msg.wParam; }
#include "header.h" #include "font.h" //* == -- - - - - -= Create Font = - - - - -- - == */ bool CFfont::MakeFont() { if (!isAll || (!isFont && !isGlow)) { timeg = 0; return true; } int sTy = Ty, a; if (bRect) { Ux = rect_sx; Uy = rect_sy; timeg = 0; Ty = MinTex; while( rect_sx > Ty || rect_sy > Ty ) Ty *= 2; Sy = sx = Ty; /*chk*/ if (Ty > MaxTex ) { format(s,S, "%d", Ty ); WrnMsg( s, "Texture size too big" ); } } else // ! bRect { // clear -- //size_t size = MaxTex * MaxTex; //memset(tFont, 0, size); //memset(tGlow, 0, size); //memset(tAlpha, 0, size); /*crt fnt*/ DeleteObject( hf ); hf = 0; DWORD qla[5] = {NONANTIALIASED_QUALITY, ANTIALIASED_QUALITY, PROOF_QUALITY, CLEARTYPE_QUALITY, CLEARTYPE_NATURAL_QUALITY}; hf = CreateFontA( sy, 0, 0, 0, (fbold == 0) ? FW_NORMAL : FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, //EASTEUROPE_CHARSET, ANSI_CHARSET OUT_TT_PRECIS, CLIP_TT_ALWAYS, qla[ql], DEFAULT_PITCH, fontName ); if (hf == 0 ) WrnMsg( "create font fail", "MakeFont" ); int i, j, k, yy; Sy = max( 1, sy + ay + by ); if (Sy > MaxSY ) WrnMsg( "Texture size too big.", "MakeFont" ); /*Codes:*/ ForEachChar if (h[n].ch) h[n].s = h[n].ch; else h[n].s = n + z1; /*[Width]*/ static ABCFLOAT A[256]; SelectObject( dc, hf ); GetCharABCWidthsFloat( dc, 0, 255, A ); ssn = 0; ss = 0; ForEachChar { h[n].h[0] = i = A[h[n].s].abcfA; h[n].h[1] = j = A[h[n].s].abcfB; h[n].h[2] = k = A[h[n].s].abcfC; if (i < 0 ) i = - i; if (k < 0 ) k = - k; w = j + max( k, ax + bx ); h[n].wi = w + h[n].ss; if (w > ss ) { ssn = n; ss = w; } } /*fixed width > */ if (fix ) { int s0 = 0; ForEachChar if (h[n].wi > s0 ) s0 = h[n].wi; //max width ForEachChar { h[n].of = ( s0 - h[n].wi ) / 2; h[n].ps = 1; h[n].wi = s0 + ax + bx; } ss = s0; } /*variable width > */ else ForEachChar { h[n].of = 0; h[n].ps = h[n].pp; /*enter*/ if (h[n].ch == 13 ) h[n].wi = - bx; } // width (smooth) groups if (!fix ) { ZeroMem( grw ); int g; ForEachChar { g = h[n].gr; if (g > 0 && g <= MaxGroups ) if (h[n].wi > grw[g] ) grw[g] = h[n].wi + grwi[g]; } //mx wi gr /*of*/ for (g = 1; g <= MaxGroups; g++) if (grw[g] > 0 ) ForEachChar if (h[n].gr == g ) { h[n].of = ( grw[g] - h[n].wi ) / 2; h[n].ps = 1; h[n].wi = grw[g]; } }