`
zhangsk
  • 浏览: 31190 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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, 00))
     {
          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, 
55, 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.

分享到:
评论

相关推荐

    HelloWin.c 注释

    windows 程序设计 HellWin.c 注释 。比较早一点的东西,对学习windows程序入门还是可以看看的。

    HelloWin_v1_src.zip; --带音乐和语音;

    HelloWin_v1; --WinAPI模板;标准窗口示例程序; [博文]WinAPI入门: 第一个标准Win32窗口程序 [改进&详细注释版;] 本示例可作为WinAPI编程入门教程;也可作为Win32编程的框架和模板; 查看教程及背景说明,请看同名博文;

    Hellowin

    最简单的VC开发程序

    Windows程序设计 HelloWin(源代码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    HelloWin_v1.sfx.exe;--带语音和背景音乐;

    [博文]WinAPI入门: 第一个标准Win32窗口程序: 1.本程序演示最简单的标准Win32应用程序的结构框架; 2.WinAPI编程作为一切Windows应用程序的基础,本程序的大部分语句都会出现在任何Windows程序中;...

    《Windows编程基础》PPT课件.ppt

    在这一章中,我们将深入探讨Windows编程的基本概念和步骤,特别是通过两个示例程序——Ex_HelloMsg和Ex_HelloWin来学习。 首先,一个最简单的Windows应用程序通常由Microsoft Visual C++ 6.0或其他类似的集成开发...

    MFC study MFC study

    为了进一步理解窗口的创建过程,我们来看一个简单的示例程序——HELLOWIN。这个程序展示了创建窗口所需的步骤,包括注册窗口类、定义窗口过程等。 **3.2 窗口类注册** 创建窗口的第一步是注册一个窗口类。窗口类...

    第一讲windows程序设计56517ppt课件.ppt

    本讲义主要介绍 Windows 程序设计的基本概念和发展历史,包括四大主流操作系统的概观、API 的必要性、窗口与消息机制、HelloWin 程序等内容。 一、四大主流操作系统及其发展简史 Windows 是最流行、最成功的操作...

    第一讲windows程序设计ppt课件.ppt

    HelloWin程序是Windows程序设计的入门示例,通常用于演示如何创建基本的窗口并显示“Hello, World!”文本。这个程序会涉及到创建窗口类、注册窗口类、创建窗口、消息循环和消息处理等基本步骤。通过编写HelloWin程序...

    windows入门程序

    描述中的"小程序"可能指的是一个简单的控制台应用或窗口应用程序,例如"HelloWin",这是许多编程教程中的经典示例。"hellowin"这个名字暗示了这可能是一个展示"Hello, World!"的窗口应用程序,这是学习任何编程语言...

    Hello Windows工程代码

    您这样做是因为HELLOWIN将使用多媒体功能呼叫,而内定的项目中又不包括多媒体链接库文件。不然连结程序报告了错误信息,表明PlaySound函数不可用。(或者在函数预编译命令时加上:#pragma comment(lib,"Winmm.lib"),...

    第一讲windows程序设计.ppt

    "HelloWin" 是一个简单的 Windows 程序示例,通常用于教学目的,展示如何使用 Windows API 创建一个显示“Hello, World!”文本的窗口。这个程序通常包含初始化窗口类、注册窗口类、创建窗口和消息循环等基本步骤。 ...

    qmake生成vs.net工程示例

    2. **SOURCE FILES**:列出源代码文件,如`SOURCES += main.cpp hello.cpp hellowin.cpp hellounix.cpp`。 3. **HEADER FILES**:列出头文件,如`HEADERS += hello.h`。 4. **FORMS**:如果项目涉及图形用户界面,会...

    D2 下win32 api 中文框架备忘

    描述中的 "hellowin.wav" 暗示了一个基础的“Hello, World!”程序,通常在学习新的编程环境或API时,人们会通过创建一个简单的窗口并在其中显示文字“Hello, World!”来入门。在这个案例中,可能包含了播放音频文件...

    Visual C++课件3

    通过“2_HelloWin.exe”这个文件名我们可以推测,这可能是课程中的第一个实际编程示例——“Hello, World!”程序的Windows版本。在C++中,"Hello, World!"是入门级程序员经常会接触到的第一个程序,它用于打印出...

    windows程序设计

    这一章节通过`HELLOWIN`示例程序介绍了如何创建一个窗口并在客户端区域内显示文本“Hello, Windows98!” ##### 关键代码分析: ```cpp LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM ...

    Windows程序设计示例

    "HELLOWIN"这个文件名可能是源代码文件,通常用于演示经典的"Hello, World!"程序在Windows环境中的实现。在C++或C语言中,这通常涉及创建一个窗口,并在其上显示指定的文本。以下是一个简化的Windows程序设计过程: ...

    windows API

    "HelloWin"通常是指一个初学者入门Windows API编程时编写的第一个程序,它的目标是展示如何使用API来创建一个简单的窗口并显示“Hello, World!”的消息。 在Windows API编程中,有几个核心概念和技术值得深入理解:...

    用C++封装SDK编程,学习作品

    在这个C++的SDK封装学习中,“HelloWin”可能是展示如何创建一个简单的Windows应用程序,通过调用SDK中的函数或者接口来显示“Hello, World!”的文本。 在深入讲解SDK封装的过程中,开发者需要了解以下几个关键点:...

    windows程序设计第一讲

    这个示例展示了如何创建一个名为“HelloWin”的窗口类,并通过消息循环处理各种消息事件。其中`WndProc`函数是窗口过程函数,负责处理接收到的消息;`WinMain`函数则是程序的入口点,负责初始化窗口类并创建窗口。

Global site tag (gtag.js) - Google Analytics