⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 samstr.c

📁 C#一个实例源代码
💻 C
字号:
/*--------------------------------------------------
  SmpStr.c
  --------------------------------------------------*/

 
#define CCH_MAXITEMTEXT 256 

#include <windows.h>
#define BUFFER 80

LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM) ;
HINSTANCE hinst;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("SmpStr") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
     
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = MainWndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
	 hinst=hInstance;
     
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateWindow (szAppName, TEXT ("Sample String"),
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
     
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
     
     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
}


 HFONT FAR PASCAL MyCreateFont( void ) 
{ 
    CHOOSEFONT cf; 
    LOGFONT lf; 
    HFONT hfont; 
 
    // Initialize members of the CHOOSEFONT structure. 
 
    cf.lStructSize = sizeof(CHOOSEFONT); 
    cf.hwndOwner = (HWND)NULL; 
    cf.hDC = (HDC)NULL; 
    cf.lpLogFont = &lf; 
    cf.iPointSize = 0; 
    cf.Flags = CF_SCREENFONTS; 
    cf.rgbColors = RGB(0,0,0); 
    cf.lCustData = 0L; 
    cf.lpfnHook = (LPCFHOOKPROC)NULL; 
    cf.lpTemplateName = (LPSTR)NULL; 
    cf.hInstance = (HINSTANCE) NULL; 
    cf.lpszStyle = (LPSTR)NULL; 
    cf.nFontType = SCREEN_FONTTYPE; 
    cf.nSizeMin = 0; 
    cf.nSizeMax = 0; 
 
    // Display the CHOOSEFONT common-dialog box. 
 
    ChooseFont(&cf); 
 
    // Create a logical font based on the user's 
    // selection and return a handle identifying 
    // that font. 
 
    hfont = CreateFontIndirect(cf.lpLogFont); 
    return (hfont); 
} 



LRESULT CALLBACK MainWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     HDC         hdc ;
     PAINTSTRUCT ps ;

int XIncrement; 
int YStart; 
TEXTMETRIC tm; 
HFONT hfntDefault;
static HFONT  hfntItalic, hfntBold; 
SIZE sz; 
LPSTR lpszString1 = "This is a "; 
LPSTR lpszString2 = "sample "; 
LPSTR lpszString3 = "string."; 

 
     switch (message)

     {
	 case WM_CREATE:
 hfntItalic = MyCreateFont(); 
  hfntBold = MyCreateFont(); 
  return 0;
 
     case WM_PAINT :
          hdc = BeginPaint (hwnd, &ps) ;		  
 
 
 
 
// Select the bold font and draw the first string 
// beginning at the specified point (XIncrement, YStart). 
 
XIncrement = 10; 
YStart = 50; 
hfntDefault = SelectObject(hdc, hfntBold); 
TextOut(hdc, XIncrement, YStart, lpszString1, 
        lstrlen(lpszString1)); 
 
// Compute the length of the first string and add 
// this value to the x-increment that is used for the 
// text-output operation. 
 
GetTextExtentPoint32(hdc, lpszString1, 
                   lstrlen(lpszString1), &sz); 
XIncrement += sz.cx; 
 
// Retrieve the overhang value from the TEXTMETRIC 
// structure and subtract it from the x-increment. 
// (This is only necessary for non-TrueType raster 
// fonts.) 
 
GetTextMetrics(hdc, &tm); 
XIncrement -= tm.tmOverhang; 
 
// Select an italic font and draw the second string 
// beginning at the point (XIncrement, YStart). 
 
hfntBold = SelectObject(hdc, hfntItalic); 
GetTextMetrics(hdc, &tm); 
XIncrement -= tm.tmOverhang; 
TextOut(hdc, XIncrement, YStart, lpszString2, 
        lstrlen(lpszString2)); 
 
// Compute the length of the second string and add 
// this value to the x-increment that is used for the 
// text-output operation. 
 
GetTextExtentPoint32(hdc, lpszString2, lstrlen(lpszString2), &sz); 
XIncrement += sz.cx; 
 
// Reselect the bold font and draw the third string 
// beginning at the point (XIncrement, YStart). 
 
SelectObject(hdc, hfntBold); 
TextOut(hdc, XIncrement - tm.tmOverhang, YStart, lpszString3, 
            lstrlen(lpszString3)); 
 
// Reselect the original font. 
 
SelectObject(hdc, hfntDefault); 
 
// Delete the bold and italic fonts. 
 
DeleteObject(hfntItalic); 
DeleteObject(hfntBold);         

          EndPaint (hwnd, &ps) ;
          return 0 ;


     case WM_DESTROY :
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -