T
Theo
Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是Win2k,Delphi 7,发现用Delphi生成的一个空白窗体的执行文件居然就有360k,
往窗体上随便在加几个东西,生成的可执行文件就上1MB了。难道Delphi生成的代码的效率...???
不敢妄下定论,听听大家的意见。
于是想用API建个窗口,代码如下,有:Runtime erro 出现,无法编译。
不知错在哪?请指出,谢谢!
program Project1;
uses windows,messages;
var MainWndClass : tagWndClassExA;
hMainWnd : HWND;
hI :HWND;
msg : tagMSG;
Terminated : BOOL;
procedure MainWndProc(hWnd:HWND; cMsg:Cardinal;wParam:Integer;lParam:Integer);
begin
DefWindowProc(hWnd,cMsg,wParam,lParam);
end;
begin
hI:=GetModuleHandle(NIL);
Terminated := False;
MainWndClass.cbSize := SizeOf(tagWndClassExA);
MainWndClass.style := CS_HREDRAW or CS_VREDRAW;
MainWndClass.lpfnWndProc := @MainWndProc;
MainWndClass.cbClsExtra := 0;
MainWndClass.cbWndExtra := 0;
MainWndClass.hInstance := hI;
MainWndClass.hbrBackGround := COLOR_WINDOW;
MainWndClass.lpszMenuName := nil;
MainWndClass.lpszClassName := 'MainWndClass';
MainWndClass.hIcon := LoadIcon(0,IDI_APPLICATION);
MainWndClass.hIconSm := 0;
MainWndClass.hCursor := LoadCursor(0,IDC_ARROW);
RegisterClassEX(MainWndClass);
hMainWnd:=CreateWindow('MainWndClass','Hello',WS_OVERLAPPEDWINDOW,
0, 0,300,400,
0,0,hI,nil);
ShowWindow(hMainWnd,SW_SHOWNORMAL);
UpdateWindow(hMainWnd);
repeat
GetMessage(msg,hMainWnd,0,0);
if msg.message = WM_CLOSE or WM_QUIT or WM_DESTROY then Terminated := true;
TranslateMessage(msg);
DispatchMessage(msg);
until Terminated;
PostQuitMessage(0);
end.
把MainWndClass.lpfnWndProc 设为 @DefWindowProc 就可以运行,可是无法退出程序。
为什么呢?窗体上的关闭按钮返回什么值给msg.message?
问题不难,送上50分。
往窗体上随便在加几个东西,生成的可执行文件就上1MB了。难道Delphi生成的代码的效率...???
不敢妄下定论,听听大家的意见。
于是想用API建个窗口,代码如下,有:Runtime erro 出现,无法编译。
不知错在哪?请指出,谢谢!
program Project1;
uses windows,messages;
var MainWndClass : tagWndClassExA;
hMainWnd : HWND;
hI :HWND;
msg : tagMSG;
Terminated : BOOL;
procedure MainWndProc(hWnd:HWND; cMsg:Cardinal;wParam:Integer;lParam:Integer);
begin
DefWindowProc(hWnd,cMsg,wParam,lParam);
end;
begin
hI:=GetModuleHandle(NIL);
Terminated := False;
MainWndClass.cbSize := SizeOf(tagWndClassExA);
MainWndClass.style := CS_HREDRAW or CS_VREDRAW;
MainWndClass.lpfnWndProc := @MainWndProc;
MainWndClass.cbClsExtra := 0;
MainWndClass.cbWndExtra := 0;
MainWndClass.hInstance := hI;
MainWndClass.hbrBackGround := COLOR_WINDOW;
MainWndClass.lpszMenuName := nil;
MainWndClass.lpszClassName := 'MainWndClass';
MainWndClass.hIcon := LoadIcon(0,IDI_APPLICATION);
MainWndClass.hIconSm := 0;
MainWndClass.hCursor := LoadCursor(0,IDC_ARROW);
RegisterClassEX(MainWndClass);
hMainWnd:=CreateWindow('MainWndClass','Hello',WS_OVERLAPPEDWINDOW,
0, 0,300,400,
0,0,hI,nil);
ShowWindow(hMainWnd,SW_SHOWNORMAL);
UpdateWindow(hMainWnd);
repeat
GetMessage(msg,hMainWnd,0,0);
if msg.message = WM_CLOSE or WM_QUIT or WM_DESTROY then Terminated := true;
TranslateMessage(msg);
DispatchMessage(msg);
until Terminated;
PostQuitMessage(0);
end.
把MainWndClass.lpfnWndProc 设为 @DefWindowProc 就可以运行,可是无法退出程序。
为什么呢?窗体上的关闭按钮返回什么值给msg.message?
问题不难,送上50分。