关于改变窗口类的名称

pcfans007 2019-01-26 08:16:52
DELPHI改变窗口类名的方法 :
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WinClassName := (MYAPPNAME);
end;

但此方法 对lazarus无效 ,为什么?
...全文
380 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcfans007 2019-01-27
  • 打赏
  • 举报
回复
引用 8 楼 早打大打打核战争 的回复:
我看了一下lcl的实现,窗口类名是硬编码的常量: lazarus\lcl\interfaces\win32\win32int.pp
大神,感谢!!!我说怎么不起作用,IDE和其编译出的EXE全是Window
  • 打赏
  • 举报
回复
我看了一下lcl的实现,窗口类名是硬编码的常量:
lazarus\lcl\interfaces\win32\win32int.pp
const
BOOL_RESULT: array[Boolean] of String = ('False', 'True');
ClsName: array[0..6] of char = 'Window'#0;
ClsHintName: array[0..10] of char = 'HintWindow'#0;
EditClsName: array[0..4] of char = 'Edit'#0;
ButtonClsName: array[0..6] of char = 'Button'#0;
ComboboxClsName: array[0..8] of char = 'ComboBox'#0;
ListboxClsName: array[0..8] of char = 'LISTBOX'#0;
TabControlClsName: array[0..15] of char = 'SysTabControl32'#0;
ListViewClsName: array[0..13] of char = 'SysListView32'#0;

LCLComboboxClsName: array[0..11] of char = 'LCLComboBox'#0;
LCLListboxClsName: array[0..10] of char = 'LCLListBox'#0;
LCLCheckListboxClsName: array[0..15] of char = 'LCLCheckListBox'#0;
ClsNameW: array[0..6] of WideChar = ('W', 'i', 'n', 'd', 'o', 'w', #0);
ClsHintNameW: array[0..10] of WideChar = ('H', 'i', 'n', 't', 'W', 'i', 'n', 'd', 'o', 'w', #0);

然后在窗体建立handle的时候直接使用了指向类名的指针:
lazarus\lcl\interfaces\win32\win32wsforms.pp
class function TWin32WSCustomForm.CreateHandle(const AWinControl: TWinControl;
begin
//...
pClassName := @ClsName[0];
//...
end;
pcfans007 2019-01-27
  • 打赏
  • 举报
回复
引用 4 楼 lyhoo163 的回复:
可以通过继承一个TForm,修改窗口的类名。
大神,进程的窗口类名称,好像不是窗体的类名,
pcfans007 2019-01-27
  • 打赏
  • 举报
回复
引用 2 楼 ooolinux 的回复:
改变这个窗口类名什么用呢,用于FindWindow?
是的,用来跨进程发送消息
pcfans007 2019-01-27
  • 打赏
  • 举报
回复
是的,用来找到,并发送消息
lyhoo163 2019-01-27
  • 打赏
  • 举报
回复
可以通过继承一个TForm,修改窗口的类名。
ooolinux 2019-01-26
  • 打赏
  • 举报
回复
改变Form1的Name属性,可以改变类名TForm1。
ooolinux 2019-01-26
  • 打赏
  • 举报
回复
改变这个窗口类名什么用呢,用于FindWindow?
doloopcn 2019-01-26
  • 打赏
  • 举报
回复
DELPHI和lazarus相同的只是都能解释编译用PASCAL写出来的代码,实际上实现的逻辑和方法差的好远呢

你用DELPHI的方法去实现的逻辑,不一定能够让LAZARUS解释编译

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧