我是win32编程的新手,我对资源有一些疑问。
我必须使用资源编辑器(来自Visual Studio)来进行控制吗?我知道它可以使用Resource Hacker编辑器进行后期编辑。怎么预防呢?
在Windows窗体(.net)或Borland Delphi(VCL)中创建的GUI无法使用res hacker进行编辑,也许它会在运行时创建控件。
是否一项毫无意义的工作是通过运行时制作所有控件以防止它被res黑客编辑?
HWND hButton = CreateWindowEx(
0,
_T("BUTTON"),
_T("Click!"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_LEFTTEXT,
5, 5, 80, 25, hwnd, (HMENU)IDC_BUTTON1,
GetModuleHandle(NULL),
NULL
);
第二个问题:在父窗口的右上角中设置控件的位置是不是很简单?
今天我这样做了:
case WM_SIZE:
{
HWND hButton;
RECT rcParent, rcButton;
hButton = GetDlgItem(hwnd, IDC_BUTTON1);
GetClientRect(hwnd, &rcParent);
GetClientRect(hButton, &rcButton);
if(!SetWindowPos(hButton, 0, rcParent.right - (rcButton.right - rcButton.left + 5), 5, 0, 0, SWP_NOSIZE))
{
MessageBox(hwnd, _T("Error at WM_SIZE"), _T("Error!"), MB_OK | MB_ICONERROR);
}
}
break;
在纯win32编程中是否有像Anchors这样的东西?
答案 0 :(得分:3)
对话框的资源文件格式很古老。唯一有利的是对话框单元抽象,这意味着对话框会自动缩放以考虑用户首选的字体和显示dpi设置。
除此之外,锚点的对话框格式没有支持。微软遗憾地没有发布新的UI构建工具包,但是对于本机开发而言,对于Native Win32应用程序,您无法在运行时手动创建/定位控件,以用于对话资源无法满足的任何任务。
WPF显然更优越,但需要.NET
我没有看到以这种或那种方式禁止res hacking的观点。你通过预防获得了什么?如果你自己的布局技巧非常糟糕,以至于人们会想要“非法地”重新布局他们的对话框,那么......我能说的就是wtf。
总结:
答案 1 :(得分:1)
毫无意义的工作是否能够完成所有控制 通过运行时来防止它被编辑 通过res hacker?
这不是没有意义的,只是额外的工作。您还需要编写资源编辑器和/或布局管理器代码以简化您的工作。您可以定义和处理自己的资源定义文件,并将其作为自定义资源。
是否有像Anchors这样的东西 纯win32编程?
纯win32中没有布局管理器。但是你可能会找到一些免费的源代码来做到这一点。做一些最小的布局管理器相当容易。
答案 2 :(得分:0)
嗨,可能没有因为win32 api是Windows中大多数图形库的基础。如果您可以在项目中执行此操作,我建议您使用一些图形库。