- 浏览: 31190 次
- 性别:
- 来自: 北京
最新评论
被Delphi惯坏了,发现写一个原生的Form这么麻烦
vc版本
Delphi版本
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) ;
}
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.
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.
发表评论
-
java反射机制2 -- 通过名称创建类,并通过该类创建实例
2007-12-05 12:43 2705这几天一直在找java中是如何实现delphi中使用元类统一管 ... -
转 从DELPHI到JAVA
2007-12-05 12:20 2858转 http://blog.csdn.net/windin ... -
How does Java compiler resolve the ambiguity to decide which
2007-12-03 17:01 1191转http://bobcat.webappcabaret.ne ... -
java中的类之类 java.lang.reflect
2007-12-02 14:41 1012不知道java.lang.reflect实现的功能算 ... -
转载,浅谈Object Pascal的指针
2007-11-30 16:15 1430转载,浅谈Object Pascal ... -
Delphi7远程调试
2007-11-30 16:12 2295Delphi7远程调试 请保留完整信息 Delphi7远程调 ... -
python thread lock
2007-11-30 16:11 30491 #coding=utf-8 2 ... -
delphi 函数指针 方法指针
2007-11-30 16:08 5156unit Unit1; interface ... -
Java线程
2007-11-30 16:07 8211 package org.zsk.error; 2 ... -
PostMessage和SendMessage区别
2007-11-30 16:06 1602PostMessage 只是把消息放入队列,不管其他程序是否处 ... -
模拟键盘输入
2007-11-30 16:04 1282SetForegroundWindow(HApp); ... -
控制另一个程序
2007-11-30 16:03 1004实现思路分析: 1、找到目标程序的句柄,可以通过窗口的capt ... -
Eclipse 常用设置 快捷键
2007-11-30 15:50 1819常用设置 1、显示行号 Window->Prefe ... -
重构-保护
2007-11-30 15:46 857重构前的代码,使用字符串处理状态 package org.zs ...
相关推荐
windows 程序设计 HellWin.c 注释 。比较早一点的东西,对学习windows程序入门还是可以看看的。
HelloWin_v1; --WinAPI模板;标准窗口示例程序; [博文]WinAPI入门: 第一个标准Win32窗口程序 [改进&详细注释版;] 本示例可作为WinAPI编程入门教程;也可作为Win32编程的框架和模板; 查看教程及背景说明,请看同名博文;
最简单的VC开发程序
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
[博文]WinAPI入门: 第一个标准Win32窗口程序: 1.本程序演示最简单的标准Win32应用程序的结构框架; 2.WinAPI编程作为一切Windows应用程序的基础,本程序的大部分语句都会出现在任何Windows程序中;...
在这一章中,我们将深入探讨Windows编程的基本概念和步骤,特别是通过两个示例程序——Ex_HelloMsg和Ex_HelloWin来学习。 首先,一个最简单的Windows应用程序通常由Microsoft Visual C++ 6.0或其他类似的集成开发...
为了进一步理解窗口的创建过程,我们来看一个简单的示例程序——HELLOWIN。这个程序展示了创建窗口所需的步骤,包括注册窗口类、定义窗口过程等。 **3.2 窗口类注册** 创建窗口的第一步是注册一个窗口类。窗口类...
本讲义主要介绍 Windows 程序设计的基本概念和发展历史,包括四大主流操作系统的概观、API 的必要性、窗口与消息机制、HelloWin 程序等内容。 一、四大主流操作系统及其发展简史 Windows 是最流行、最成功的操作...
HelloWin程序是Windows程序设计的入门示例,通常用于演示如何创建基本的窗口并显示“Hello, World!”文本。这个程序会涉及到创建窗口类、注册窗口类、创建窗口、消息循环和消息处理等基本步骤。通过编写HelloWin程序...
描述中的"小程序"可能指的是一个简单的控制台应用或窗口应用程序,例如"HelloWin",这是许多编程教程中的经典示例。"hellowin"这个名字暗示了这可能是一个展示"Hello, World!"的窗口应用程序,这是学习任何编程语言...
您这样做是因为HELLOWIN将使用多媒体功能呼叫,而内定的项目中又不包括多媒体链接库文件。不然连结程序报告了错误信息,表明PlaySound函数不可用。(或者在函数预编译命令时加上:#pragma comment(lib,"Winmm.lib"),...
"HelloWin" 是一个简单的 Windows 程序示例,通常用于教学目的,展示如何使用 Windows API 创建一个显示“Hello, World!”文本的窗口。这个程序通常包含初始化窗口类、注册窗口类、创建窗口和消息循环等基本步骤。 ...
2. **SOURCE FILES**:列出源代码文件,如`SOURCES += main.cpp hello.cpp hellowin.cpp hellounix.cpp`。 3. **HEADER FILES**:列出头文件,如`HEADERS += hello.h`。 4. **FORMS**:如果项目涉及图形用户界面,会...
描述中的 "hellowin.wav" 暗示了一个基础的“Hello, World!”程序,通常在学习新的编程环境或API时,人们会通过创建一个简单的窗口并在其中显示文字“Hello, World!”来入门。在这个案例中,可能包含了播放音频文件...
通过“2_HelloWin.exe”这个文件名我们可以推测,这可能是课程中的第一个实际编程示例——“Hello, World!”程序的Windows版本。在C++中,"Hello, World!"是入门级程序员经常会接触到的第一个程序,它用于打印出...
这一章节通过`HELLOWIN`示例程序介绍了如何创建一个窗口并在客户端区域内显示文本“Hello, Windows98!” ##### 关键代码分析: ```cpp LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM ...
"HELLOWIN"这个文件名可能是源代码文件,通常用于演示经典的"Hello, World!"程序在Windows环境中的实现。在C++或C语言中,这通常涉及创建一个窗口,并在其上显示指定的文本。以下是一个简化的Windows程序设计过程: ...
"HelloWin"通常是指一个初学者入门Windows API编程时编写的第一个程序,它的目标是展示如何使用API来创建一个简单的窗口并显示“Hello, World!”的消息。 在Windows API编程中,有几个核心概念和技术值得深入理解:...
在这个C++的SDK封装学习中,“HelloWin”可能是展示如何创建一个简单的Windows应用程序,通过调用SDK中的函数或者接口来显示“Hello, World!”的文本。 在深入讲解SDK封装的过程中,开发者需要了解以下几个关键点:...
这个示例展示了如何创建一个名为“HelloWin”的窗口类,并通过消息循环处理各种消息事件。其中`WndProc`函数是窗口过程函数,负责处理接收到的消息;`WinMain`函数则是程序的入口点,负责初始化窗口类并创建窗口。