to wjlsmail(计算机质子) 刚才没看到你的回复,我在分析pe文件格式,就像exescope那样,当然现在还差的多呢。 不过windows.pas里的声明似乎还不够,我又下了那本书,再改改吧。另,若不嫌弃,分就都给你吧。 不是倒分!严正声明!^_^
typedef struct { WORD wDlgVer; //always 1; WORD wSignature; //alwaya 0xFFFF; DWORD dwHelpID; DWORD dwExStyle; //such as ws_ex_topmost; DWORD dwStyle; //such as ws_caption; WORD cDlgItems; Short x; // in pixels Short y; // in pixels Short cx; //in dialog box units Short cy; //indialog box units; Byte bStartOfStrings; } DLGTEMPLATEEX, *PDLGTEMPLATEEX;若dlgtemplateex结构的style标志的ds_setfont位是on的话,有一个fontinfoex结构直接附于窗体标题之后;typedef struct{ short nPoinSize; short nWeight; // such as fw_normal short fitalic; //true or false; Byte dStartOfStrings; //font name; }FONTINFOEX, *PFONTINFOEX;多个子视窗结构 typedef struct{ DWORD dwHelpID; DWORD dwExstyle; //such as ws_ex_controlparent; DWORD dwStyle; //such as ws_tabstop short x; short y; short cx; short cy; DWORD id; BYTE bStartOfStrings; WORD wExtraCount ; //ususlly 0 } DLGITEMTEMPLATEEX, *TDLGITEMTEMPLATEEX;
这本书叫《Windows 95 : A Developer’s Guide》 作者是jeffrey richter,也是《windows 核心编程》一书的作者,更是我的偶像~~我在唱独脚戏吗~郁闷
PDlgTemplate = ^TDlgTemplate;
{$EXTERNALSYM DLGTEMPLATE}
DLGTEMPLATE = packed record
style: DWORD;
dwExtendedStyle: DWORD;
cdit: Word;
x: SHORT;
y: SHORT;
cx: SHORT;
cy: SHORT;
end;
TDlgTemplate = DLGTEMPLATE; { 32 bit Dialog item template. }
PDlgItemTemplate = ^TDlgItemTemplate;
{$EXTERNALSYM DLGITEMTEMPLATE}
DLGITEMTEMPLATE = packed record
style: DWORD;
dwExtendedStyle: DWORD;
x: SHORT;
y: SHORT;
cx: SHORT;
cy: SHORT;
id: Word;
end;
TDlgItemTemplate = DLGITEMTEMPLATE;分怎么办?
刚才没看到你的回复,我在分析pe文件格式,就像exescope那样,当然现在还差的多呢。
不过windows.pas里的声明似乎还不够,我又下了那本书,再改改吧。另,若不嫌弃,分就都给你吧。
不是倒分!严正声明!^_^
WORD wDlgVer; //always 1;
WORD wSignature; //alwaya 0xFFFF;
DWORD dwHelpID;
DWORD dwExStyle; //such as ws_ex_topmost;
DWORD dwStyle; //such as ws_caption;
WORD cDlgItems;
Short x; // in pixels
Short y; // in pixels
Short cx; //in dialog box units
Short cy; //indialog box units;
Byte bStartOfStrings;
} DLGTEMPLATEEX, *PDLGTEMPLATEEX;若dlgtemplateex结构的style标志的ds_setfont位是on的话,有一个fontinfoex结构直接附于窗体标题之后;typedef struct{
short nPoinSize;
short nWeight; // such as fw_normal
short fitalic; //true or false;
Byte dStartOfStrings; //font name;
}FONTINFOEX, *PFONTINFOEX;多个子视窗结构
typedef struct{
DWORD dwHelpID;
DWORD dwExstyle; //such as ws_ex_controlparent;
DWORD dwStyle; //such as ws_tabstop
short x;
short y;
short cx;
short cy;
DWORD id;
BYTE bStartOfStrings;
WORD wExtraCount ; //ususlly 0
} DLGITEMTEMPLATEEX, *TDLGITEMTEMPLATEEX;
作者是jeffrey richter,也是《windows 核心编程》一书的作者,更是我的偶像~~我在唱独脚戏吗~郁闷
自定义公用对话框的一些Label:procedure TForm1.OpenDialog1Show(Sender: TObject);{First, we need to determine identifiers of dialog'scontrols, they are following:}constLB_FILETYPES_ID = 1089; // "File types:" labelLB_FILENAME_ID = 1090; // "File name:" labelLB_DRIVES_ID = 1091; // "Look in:" labelStr1 = 'Four';Str2 = 'Five';Str3 = 'One';Str4 = 'Two';Str5 = 'Three';varhOpenDialog: HWND;beginhOpenDialog := GetParent(OpenDialog1.Handle);SendMessage(hOpenDialog, CDM_SETCONTROLTEXT, idOk, Longint(PChar(Str1)));SendMessage(hOpenDialog, CDM_SETCONTROLTEXT, idCancel, Longint(PChar(Str2)));SendMessage(hOpenDialog, CDM_SETCONTROLTEXT, LB_FILETYPES_ID, Longint(PChar(Str3)));SendMessage(hOpenDialog, CDM_SETCONTROLTEXT, LB_FILENAME_ID, Longint(PChar(Str4)));SendMessage(hOpenDialog, CDM_SETCONTROLTEXT, LB_DRIVES_ID, Longint(PChar(Str5)));end;procedure TForm1.Button1Click(Sender: TObject);beginOpenDialog1.Execute;end;***********procedure TForm1.PrintDialog1Show(Sender: TObject);beginSetWindowText(GetDlgItem(PrintDialog1.Handle, idOk), '&OK2');SetWindowText(GetDlgItem(PrintDialog1.Handle, idCancel), '&Cancel2');SetWindowText(GetDlgItem(PrintDialog1.Handle, 1025), '&Properties2');end;// to Enumerate Control - IDs:function EnumProc(wnd: HWND; Lines: TStrings): BOOL; stdcall;varbuf, Caption: array [0..255] of char;beginResult := True;GetClassname(wnd, buf, 256);GetWindowText(wnd, Caption, 256);Lines.Add(Format('ID: %d, class: %s, caption: %s',[GetDlgCtrlID(wnd), buf, Caption]));end;procedure TForm1.PrintDialog1Show(Sender: TObject);beginmemo1.Clear;EnumChildWindows(Printdialog1.Handle, @EnumProc, Integer(memo1.Lines));end;注意,OpenDialog.Handle不是那个窗口的Handle,需要用GetParent(OpenDialog.Handle)来获取真正的Handle。因此EnumChildWindows对于OpenDialog来说,应该是:EnumChildWindows(GetParent(OpenDialog1.Handle),@EnumProc,Integer(Memo1.Lines));{ Win2K OpenDialog的ID和Class信息:ID: 1091, class: Static, caption: 查找范围(&I):ID: 1137, class: ComboBox, caption:ID: 1088, class: Static, caption:ID: 1088, class: ToolbarWindow32, caption:ID: 1120, class: ListBox, caption:ID: 1090, class: Static, caption: 文件名(&N):ID: 1148, class: ComboBoxEx32, caption:ID: 1148, class: ComboBox, caption:ID: 1148, class: Edit, caption:ID: 1089, class: Static, caption: 文件类型(&T):ID: 1136, class: ComboBox, caption:ID: 1040, class: Button, caption: 以只读方式打开(&R)ID: 1, class: Button, caption: 打开(&O)ID: 2, class: Button, caption: 取消ID: 1038, class: Button, caption: 帮助(&H)ID: -1, class: ScrollBar, caption:ID: 0, class: #32770, caption:}
又没看到你的回复,不好意思哦~~
猛料里我没看倒啊,回头再找找看。
另外,我也只是点到为止,以后多多交流~~
或者,只有这种体系的windows存在就有它的意思。
jjhou.csdn.net
有好多好书呢!!!
开个玩笑~~这书是pdf的,我看着很不爽,也打了几章出来。
那时候就因为几本好书都是电子版的,买了个打印机~~
过去的事情了......现在对技术也没什么有兴趣了,唉
书是好书,强烈推荐!
还有一本也不错,中文叫《windows编程大揭密》??
不瞒你说,我在263还有个email注册的叫jefferyrichter呢,^_^
还是年轻好啊,另,我这里qq或者msn都不方便,没办法~
我也一句两句说不清楚(主要是都忘了^_^)
-------------------------------------我的意思是这样 :只要队列中有我定义的消息就优先处理,可以么 ?