Bagaimana Limit Minimum dan maksimum ukuran jendela

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:185733
Artikel ini telah diarsipkan. Artikel ditawarkan dalam bentuk "apa adanya" dan tidak akan dapat diperbarui lagi.
RINGKASAN
Secara default, Visual Basic memungkinkan bentuk yang akan diubah ukurannya untuk setiap ukuran yang Anda inginkandisediakan BorderStyle diatur dengan tepat. Kadang-kadang, mungkindiinginkan atau diperlukan untuk membatasi berbagai ukuran jendela (seperti itutidak boleh lebih kecil atau lebih besar dari ukuran yang telah ditentukan).

Sebagai contoh, aksesori Windows, Microsoft Paint, mencegah jendela yangdari yang berukuran di bawah titik tertentu. Hal ini dilakukan untuk memungkinkan pengguna untukselalu melihat setidaknya sebagian dari mereka adalah editing gambar.

Dengan bantuan dari fungsi Windows API, Anda dapat mencapai ini samafungsi dalam aplikasi Visual Basic.
INFORMASI LEBIH LANJUT
PERINGATAN: PENGGUNAAN OLEH ANDA KODE CONTOH YANG TERSEDIA DI DALAM ARTIKEL INI ADALAH PADARISIKO ANDA SENDIRI. Microsoft menyediakan kode contoh ini "sebagaimana adanya" tanpa garansiapapun, baik tersurat maupun tersirat, termasuk tetapi tidak terbatas padajaminan tersirat mengenai keadaan yang dapat diperjualbelikan dan/atau kesesuaian untuk tertentutujuan.

Berikut adalah langkah-langkah untuk membuat aplikasi sampel menunjukkanperilaku yang dibahas di atas. Untuk mencapai fungsi ini, sebuah konsep yang dikenal sebagaisubclassing harus digunakan untuk mendeteksi ketika pesan WM_GETMINMAXINFOterjadi. Pesan ini terjadi ketika dilakukan usaha untuk mengubah ukuran jendela.

Untuk informasi lebih lanjut tentang subclassing, silakan lihat artikel berikut diBasis Pengetahuan Microsoft:
168795: Bagaimana untuk Hook ke jendela pesan menggunakan AddressOf

Kegagalan untuk melepas kaitan sebuah jendela sebelum kehancuran hasil dalam aplikasikesalahan, kesalahan halaman tidak sah, dan kehilangan data. Masalah ini dapat terjadi ketikafungsi WindowProc baru menunjuk ke tidak lagi ada, tetapi jendelatidak telah diberitahu perubahan. Selalu melepas kaitan jendela subclassedSetelah bongkar muat bentuk subclassed atau keluar aplikasi. Ini adalahterutama penting sementara debug aplikasi yang menggunakan initeknik dalam lingkungan pengembangan Visual Basic Microsoft.Mengklik akhir tombol atau, pada Run menu, mengklik berakhir, tanpaunhooking penyebab kegagalan halaman tidak sah dan menutup Microsoft Visual Basic.

Langkah-langkah untuk membuat contoh aplikasi

  1. Buat projek Standard EXE yang baru.
  2. Paste kode berikut ke Form1's kode modul:
          Option Explicit      Private Sub Form_Load()          'Save handle to the form.          gHW = Me.hwnd          'Begin subclassing.          Hook      End Sub      Private Sub Form_Unload(Cancel As Integer)          'Stop subclassing.          Unhook      End Sub						
  3. Menambahkan modul standar untuk proyek.
  4. Paste kode berikut ke dalam modul:
          Option Explicit      Private Const GWL_WNDPROC = -4      Private Const WM_GETMINMAXINFO = &H24      Private Type POINTAPI          x As Long          y As Long      End Type      Private Type MINMAXINFO          ptReserved As POINTAPI          ptMaxSize As POINTAPI          ptMaxPosition As POINTAPI          ptMinTrackSize As POINTAPI          ptMaxTrackSize As POINTAPI      End Type      Global lpPrevWndProc As Long      Global gHW As Long      Private Declare Function DefWindowProc Lib "user32" Alias _         "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, _          ByVal wParam As Long, ByVal lParam As Long) As Long      Private Declare Function CallWindowProc Lib "user32" Alias _         "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _          ByVal hwnd As Long, ByVal Msg As Long, _          ByVal wParam As Long, ByVal lParam As Long) As Long      Private Declare Function SetWindowLong Lib "user32" Alias _         "SetWindowLongA" (ByVal hwnd As Long, _          ByVal nIndex As Long, ByVal dwNewLong As Long) As Long      Private Declare Sub CopyMemoryToMinMaxInfo Lib "KERNEL32" Alias _         "RtlMoveMemory" (hpvDest As MINMAXINFO, ByVal hpvSource As Long, _          ByVal cbCopy As Long)      Private Declare Sub CopyMemoryFromMinMaxInfo Lib "KERNEL32" Alias _         "RtlMoveMemory" (ByVal hpvDest As Long, hpvSource As MINMAXINFO, _          ByVal cbCopy As Long)      Public Sub Hook()          'Start subclassing.          lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, _             AddressOf WindowProc)      End Sub      Public Sub Unhook()          Dim temp As Long          'Cease subclassing.          temp = SetWindowLong(gHW, GWL_WNDPROC, lpPrevWndProc)      End Sub      Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, _         ByVal wParam As Long, ByVal lParam As Long) As Long          Dim MinMax As MINMAXINFO          'Check for request for min/max window sizes.          If uMsg = WM_GETMINMAXINFO Then              'Retrieve default MinMax settings              CopyMemoryToMinMaxInfo MinMax, lParam, Len(MinMax)              'Specify new minimum size for window.              MinMax.ptMinTrackSize.x = 200              MinMax.ptMinTrackSize.y = 200              'Specify new maximum size for window.              MinMax.ptMaxTrackSize.x = 500              MinMax.ptMaxTrackSize.y = 500              'Copy local structure back.              CopyMemoryFromMinMaxInfo lParam, MinMax, Len(MinMax)              WindowProc = DefWindowProc(hw, uMsg, wParam, lParam)          Else              WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, _                 wParam, lParam)          End If      End Function						
  5. Simpan dan menjalankan aplikasi sampel.
  6. Mencoba untuk mengubah ukuran Form1.

    HASIL: Bentuk tidak diperbolehkan untuk berukuran lebih kecil daripada 200 oleh 200 piksel atau lebih besar dari 500 oleh 500 piksel.
REFERENSI
Untuk informasi tambahan, lihat article(s) berikut diBasis Pengetahuan Microsoft:
168795: Bagaimana untuk Hook ke jendela pesan menggunakan AddressOf
Min Max kbSDKWin32 kbAPI kbDSupport kbDSD pendidikan sub kelas kbVBp500 kbVBp600 kbdsd kbDSupport kbVBp

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 185733 - Tinjauan Terakhir: 12/05/2015 08:40:28 - Revisi: 2.0

Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Control Creation Edition, Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition

  • kbnosurvey kbarchive kbgrpdsvb kbhowto kbmt KB185733 KbMtid
Tanggapan