procedure bclick(var msg:TWMLBUTTONDOWN);message WM_LBUTTONDOWN;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”等';
I.Desire := '加不加分随你';
—————————————————————————————————
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”等';
I.Desire := '加不加分随你';
—————————————————————————————————
procedure WMCommand(var msg:TMessage);message WM_COMMAND;
函数体:
procedure TMyform.WMCommand(var msg:TMessage);
begin
if msg.WParam = BN_CLICKED then
ShowMessage('Clicked')
else
inherited;
end;
注意:
TButton是被VCL subclass过的,不会向父窗口发送BN_CLICKED等消息.只有如下创建的Button才会向父窗口发送该消息:
var
wnd:HWND;
begin
wnd := CreateWindow('BUTTON','test',WS_CHILD,20,20,200,40,Handle,0,hInstance,nil);
ShowWindow(wnd,SW_SHOW);
end;
他的方法是最简单的
当然,这也得归功于delphi
另外,你也可以用SetWindowLong 用自己的程序来替换button的窗口函数,从而获得更多的控制
这就比较复杂了,但却是比较标准的做法
如果是手工书写的API建立的窗体上的按钮事件,
不管这个按钮是
wnd :=CreateWindow('BUTTON','test',WS_CHILD,20,20,200,40,Handle,0,hInstance,nil);
还是:
wnd := CreateWindow('BUTTON','test',WS_CHILD,20,20,200,40,Handle,0,0,nil);
的语句建立的,都可以正确响应bn_clicked消息。
但对VCL建立的按钮,没有响应bn_clicked消息的。
VCL的TButton类对BUTTON窗口进行了Sub Class,BUTTON的缺省窗口函数并没有接收到鼠标消息,而是被VCL的窗口函数截获,并传给了TButton类,该类并没有向其父窗口发送BN_CLICK通知消息,而是调用OnClick事件了,所以就没有BN_CLICK消息,也没无从响应了。
begin
if Message.NotifyCode = BN_CLICKED then
/////
end;================================================================
一颗红心向前看,为了革命两茫然,不好意思才囊尽,只能说上一点点。
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
★ 我踢 我踢 我踢 我踢 我踢 我踢 我踢 我踢 我踢 ★
★ 你UP 你UP 你UP 你UP 你UP 你UP 你UP 你UP 你UP ★
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
================================================================