HelloWin

被Delphi惯坏了,发现写一个原生的Form这么麻烦
vc版本
<!----> #include  < windows.h >

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int  WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, 
int  iCmdShow)
{
     
static  TCHAR szAppName[]  =  TEXT ( " HelloWin " ) ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;

     wndclass.style         
=  CS_HREDRAW  |  CS_VREDRAW ;
     wndclass.lpfnWndProc   
=  WndProc ;
     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 ;

     
if  ( ! RegisterClass ( & wndclass))
     {
          MessageBox (NULL, TEXT (
" This program requires Windows NT! " ), 
                      szAppName, MB_ICONERROR) ;
          
return   0  ;
     }
     
     hwnd 
=  CreateWindow (szAppName,                   //  window class name
                          TEXT ( " The Hello Program " ),  //  window caption
                          WS_OVERLAPPEDWINDOW,         //  window style
                          CW_USEDEFAULT,               //  initial x position
                          CW_USEDEFAULT,               //  initial y position
                          CW_USEDEFAULT,               //  initial x size
                          CW_USEDEFAULT,               //  initial y size
                          NULL,                        //  parent window handle
                          NULL,                        //  window menu handle
                          hInstance,                   //  program instance handle
                          NULL) ;                      //  creation parameters
     
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
     
     
while  (GetMessage ( & msg, NULL,  0 0 ))
     {
          TranslateMessage (
& msg) ;
          DispatchMessage (
& msg) ;
     }
     
return  msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        rect ;
     
     
switch  (message)
     {
     
case  WM_CREATE:
          PlaySound (TEXT (
" hellowin.wav " ), NULL, SND_FILENAME  |  SND_ASYNC) ;
          
return   0  ;
          
     
case  WM_PAINT:
          hdc 
=  BeginPaint (hwnd,  & ps) ;
          
          GetClientRect (hwnd, 
& rect) ;
          
          DrawText (hdc, TEXT (
" Hello, Windows 98! By ZhangSK " ),  - 1 & rect,
                    DT_SINGLELINE 
|  DT_CENTER  |  DT_VCENTER) ;
          
          EndPaint (hwnd, 
& ps) ;
          
return   0  ;
          
     
case  WM_DESTROY:
          PostQuitMessage (
0 ) ;
          
return   0  ;
     }
     
return  DefWindowProc (hwnd, message, wParam, lParam) ;
}

Delphi版本
<!----> program HelloWin;

uses
  Windows,
  Messages,
  MMSystem,
  SysUtils;

Const
  AppName:String 
=   ' HelloWin ' ;
  Null:Integer 
=   0 ;

function WndProc(WindowHwnd:HWND;TheMessage:UINT;WPARAMS:wParam;LPARAMS:lParam):Integer;stdcall;
var
  ClientDC:HDC;
  ps:TPaintStruct;
  ClientRect:TRect;
  sUser, sPower: string;
begin
  
case  TheMessage of
  WM_CREATE: begin
     PlaySound(
' hellowin.wav ' , null ,SND_FILENAME or SND_ASYNC);
     Result:
= 0 ;
  end;
  WM_PAINT: begin
     ClientDc:
= BeginPaint(WindowHwnd,ps);
     GetClientRect(WindowHwnd,ClientRect);
     DrawText(ClientDc,PChar(
' Hello,Window98! ' ), - 1 ,ClientRect,DT_SINGLELINE or
              DT_CENTER OR DT_VCENTER);
     sUser :
=   ' ZhangSK '' Testing ' ;
     sPower :
=   ' POWERD BY DELPHI ' ;
     TextOut(ClientDC, 
5 5 , PChar(sUser), Length(sUser));
     TextOut(ClientDC, ClientRect.Right
- 200 , ClientRect.Bottom - 30 , PChar(sPower), Length(sPower));
     Endpaint(Windowhwnd,ps);
     Result:
= 0 ;
  end;
  WM_DESTROY: begin
     PostQuitMessage(
0 );
     Result:
= 0 ;
  end;
  
else
    Result:
= DefWindowProc(WindowHwnd,TheMessage,WPARAMS,LPARAMS);
  end;
end;


  
var
  WinHwnd:HWND;
  WinMsg:MSG;
  WinClass:WNDCLASS;
  ECode:DWORD;
  EString:PChar;
begin
  WinClass.style:
= CS_HREDRAW OR CS_VREDRAW;
  WinClass.lpfnWndProc:
= @WndProc;
  WinClass.cbClsExtra:
= 0 ;
  WinClass.cbWndExtra:
= 0 ;
  WinClass.hInstance:
= hInstance;
  WinClass.hIcon:
= LoadIcon(NULL,IDI_APPLICATION);
  WinClass.hCursor:
= LoadCursor(Null,IDC_ARROW);
  WinClass.hbrBackground:
= HBRUSH(GetStockObject(WHITE_BRUSH));
  WinClass.lpszMenuName:
= nil;
  WinClass.lpszClassName:
= PChar(AppName);

  
if  (RegisterClass(WinClass) = 0 ) then
  begin
    MessageBox(
null , ' This application need WINDOWS platform ' , ' message ' ,MB_ICONERROR);
    exit;
  end;

  WinHwnd:
= CreateWindow(PChar(AppName), ' First SDK Application ' ,WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
                        
0 , 0 ,hInstance,nil);
  
if  Iswindow(WinHwnd)then
  begin
    ShowWindow(WinHwnd,SW_SHOWNORMAL);
    updateWindow(WinHwnd);
  end
  
else  begin
    ECode:
= GetLastError;
    EString:
= PChar(Inttostr(LoWord(ECode)));
    Messagebox(
null ,EString, ' Error ' ,MB_ICONERROR);
    exit;
  end;

  
while (Getmessage(WinMsg, null , 0 , 0 )) do
  begin
    TranslateMessage(WinMsg);
    DispatchMessage(WinMsg);
  end;

  UnregisterClass(PChar(AppName),hInstance);
end.

你可能感兴趣的:(windows,vc++,Delphi)