源码
解决方案 »
- 一个循环插入数据的
- 如何能让dbgrid1.columns[i].picklist在选中单元格时就自动弹出列表来?
- 求助:各位大哥,客户端怎么读取(访问)服务器的数据(比如图片),马上放分
- 有奖竞猜 有个叫 No1os_sinox 人,狂发答复贬低windows和linux,抬高自己,大家认为这个人是sinox自己人还是仇人?
- 应用服务器的问题?
- 我快疯了~!救我!!!100分
- 呵呵,放分罗
- dsgnintf是什么东西,为什么有的机上可以通过编译,有些机上就说找不到"dsgnintf.duc"?
- delphi 报表 显示
- 怎样获取字符的字节?
- 有在新疆的做程序的进来聊聊呀!
- 求好的查找字符串算法,达到chm搜索速度的一半就行了
你要是一个API高手的话,好象可以实现,但这样又好象不太现实!
我是菜鸟,以上是个人想法,不代表公司意见!
我的DELPHI是中文的啊
program testwindow;uses
Windows,
Messages;var
WinClass: TWndClassA;
Inst, Handle, Button1, Label1, Edit1: Integer;
Msg: TMsg;
hFont: Integer;{ Checks if typed password is 'Amigreen' and shows Message }
procedure CheckPassword;
var
Textlength: Integer;
Text: PChar;
begin
TextLength := GetWindowTextLength(Edit1);
if TextLength = 8 then
begin
GetMem(Text, TextLength + 1);
GetWindowText(Edit1, Text, TextLength + 1);
if Text = 'Amigreen' then
begin
MessageBoxA(Handle, 'Password is correct.', 'Password check', MB_OK);
FreeMem(Text, TextLength + 1);
Exit;
end;
end;
MessageBoxA(Handle, 'Password is incorrect.', 'Password check', MB_OK);
end;{ Custom WindowProc function }
function WindowProc(hWnd, uMsg, wParam, lParam: Integer): Integer; stdcall;
begin
Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
{ Checks for messages }
if (lParam = Button1) and (uMsg = WM_COMMAND) then
CheckPassword;
if uMsg = WM_DESTROY then
Halt;
end;begin
{ ** Register Custom WndClass ** }
Inst := hInstance;
with WinClass do
begin
style := CS_CLASSDC or CS_PARENTDC;
lpfnWndProc := @WindowProc;
hInstance := Inst;
hbrBackground := color_btnface + 1;
lpszClassname := 'AG_TESTWINDOW';
hCursor := LoadCursor(0, IDC_ARROW);
end; { with }
RegisterClass(WinClass); { ** Create Main Window ** }
Handle := CreateWindowEx(WS_EX_WINDOWEDGE, 'AG_TESTWINDOW', 'Amigreen TestWindow 1.00',
WS_VISIBLE or WS_SIZEBOX or WS_CAPTION or WS_SYSMENU,
363, 278, 305, 65, 0, 0, Inst, nil);
{ ** Create a button ** }
Button1 := CreateWindow('Button', 'OK', WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or BS_TEXT,
216, 8, 75, 25, handle, 0, Inst, nil);
{ ** Create a label (static) ** }
Label1 := Createwindow('Static', '', WS_VISIBLE or WS_CHILD or SS_LEFT,
8, 12, 76, 13, Handle, 0, Inst, nil); { ** Create an edit field ** }
Edit1 := CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', '', WS_CHILD or WS_VISIBLE or
WS_BORDER or ES_PASSWORD, 88, 8, 121, 21, Handle, 0, Inst, nil); { ** Create Font Handle ** }
hFont := CreateFont(-11, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif'); { Change fonts }
if hFont <> 0 then
begin
SendMessage(Button1, WM_SETFONT, hFont, 0);
SendMessage(Label1, WM_SETFONT, hFont, 0);
SendMessage(Edit1, WM_SETFONT, hFont, 0);
end;
{ Change label (static) text }
SetWindowText(Label1, 'Enter password:');
{ Set the focus to the edit control }
SetFocus(Edit1); UpdateWindow(Handle); { ** Message Loop ** }
while(GetMessage(Msg, Handle, 0, 0)) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end; { with }
end.
一样可以写所有的 WINDOWS 程序, 不过会麻烦很多, 因为你的每个操作都要调用标准 WINDOWS API, 就象原来用汇编写 DOS 程序一样
所谓的 VCL 就是把标准 WINDOWS API 集成为易于使用的控件或函数集, DELPHI 也就这样提高了开发效率, 如果你不用 VCL 的话, 不如去用 VC, 因为 VC 调用 WINDOWS API 比 DELPHI方便许多
呵呵