Tôi nghĩ rằng cách để đi đến đây là xử lý thông báo WM_ACTIVE và sau đó kiểm tra xem thông số fMinimized có không phải là không. Bạn có thể tìm thêm thông tin về cách khai báo thông báo này trong mã của bạn trong here.
Tôi sẽ cố gắng tìm ra cách chính xác mã này trong C# và chứng minh giả thuyết. Tuy nhiên bạn có thể nhanh hơn tôi và tìm ra nó.
Đồng thời kiểm tra các chức năng DefWindowProc và WindowProc, được sử dụng để xử lý thư. Chức năng được khai báo trong mã của bạn như thế này:
Đầu tiên có bao gồm:
using System.Runtime.InteropServices;
sau đó trong lớp tuyên bố như thế này
[DllImport("coredll.dll")]
static extern IntPtr DefWindowProc(IntPtr hWnd, uint uMsg, UIntPtr wParam,
IntPtr lParam);
Còn có một điều bạn có thể làm, đây là một giải pháp "triết học" hơn. INMO thông minh giảm thiểu X gây nhầm lẫn cho người dùng, đó là lý do tại sao tôi không muốn đưa nó vào. Thay vào đó, tôi cung cấp một nút ở góc dưới bên phải của biểu mẫu có nội dung "đóng" hoặc "quay lại", sử dụng phương thức đóng của biểu mẫu. Tôi đã sử dụng nó ở mọi hình thức để giữ một tiêu chuẩn. Điều này ít mơ hồ hơn đối với người dùng windows vì họ có thể giả định rằng X trong windows mobile giống với X trong windows cho PC.
Nếu vì một số lý do bạn cần phải hạn chế tối đa ứng dụng của bạn hoặc gửi cho nền sử dụng đoạn mã sau:
using System.Runtime.InteropServices;
...
public partial class Main : Form
{
public Main()
{
InitializeComponent();
}
[DllImport("coredll.dll")]
static extern int ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_MINIMIZED = 6;
...
...
public void HideForm()
{
ShowWindow(this.Handle, SW_MINIMIZED);
}
}
Nguồn
2009-01-04 01:13:16
** Compact Framework ** không cho phép truy cập vào phương thức 'WindowProc' cho' Form 'bình thường, vậy làm thế nào tôi có thể sử dụng lời khuyên này? Hay tôi đang thiếu thứ gì đó ở đây ... –