[英]Resources and control position in win32 programming
我是Win32編程的新手,並且對資源有一些疑問。
我必須使用資源編輯器(來自Visual Studio)進行控制嗎? 我知道可以使用Resource Hacker編輯器對其進行后期編輯。 怎么預防呢?
無法使用res hacker編輯在Windows Forms(.net)或Borland Delphi(VCL)中創建的GUI,也許它在運行時創建了控件。
是一件毫無意義的工作,可以在運行時進行所有控制以防止由res hacker編輯嗎?
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編程中是否存在類似於錨點的內容?
對話框的資源文件格式是古老的。 唯一支持它的是對話框單元抽象,這意味着對話框會自動縮放以考慮用戶首選的字體並顯示dpi設置。
除此之外,對話格式不支持錨點。 遺憾的是,Microsoft尚未發布用於本機開發的新UI構建工具包,因此對於本機Win32應用程序,您將無法在運行時為對話框資源無法完成的任何任務手動創建/定位控件。
WPF顯然是優越的,但需要.NET
我不認為禁止res入侵是一種方法。 預防它有什么好處? 如果您自己的布局技巧太差,以至於人們會想要“非法”重新布局對話框,那么……我只能說wtf。
總結一下:
是一件毫無意義的工作,可以在運行時進行所有控制以防止由res hacker編輯嗎?
這不是沒有意義的,只是額外的工作。 您還需要對資源編輯器和/或布局管理器進行編碼,以簡化工作。 您可以定義和處理自己的資源定義文件,並將其作為自定義資源。
在純Win32編程中是否存在類似於錨點的內容?
純Win32中沒有布局管理器。 但是您可能會找到一些免費的源代碼來執行此操作。 做一些最小的布局管理器很容易。
嗨,可能不是因為win32 api是Windows中大多數圖形庫的基礎。 如果可以在項目中使用它,我可以建議您使用一些圖形庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.