Menangani Bantuan Online
Bantuan online dapat datang dalam berbagai bentuk, dari informasi konseptual terperinci hingga definisi cepat. Topik ini berisi bagian berikut.
Tentang Bantuan
Elemen penting dari aplikasi yang mudah digunakan tersedia dalam bantuan online. Windows menyediakan fungsi dan pesan yang, ketika digunakan bersama dengan aplikasi Bantuan Windows, memudahkan penerapan bantuan daring dalam aplikasi Anda. Gambaran umum ini membahas elemen Windows yang mendukung bantuan daring. Ini menjelaskan cara menggunakan elemen-elemen ini untuk memberi pengguna sarana untuk meminta bantuan, dan menjelaskan cara menggunakan aplikasi Bantuan Windows untuk menampilkan bantuan.
Permintaan Bantuan
Sebagian besar aplikasi berbasis Windows menyediakan informasi bantuan online dalam berbagai bentuk, mulai dari bantuan konseptual yang menjelaskan tujuan fitur aplikasi hingga bantuan pop-up yang menyediakan definisi cepat elemen individual di antarmuka pengguna aplikasi. Anda menggunakan fungsi dan pesan untuk memberi pengguna berbagai cara untuk meminta akses ke informasi ini. Bagian berikut menjelaskan permintaan bantuan ini.
Menu Bantuan
Sebagian besar aplikasi menyediakan akses pengguna untuk membantu informasi dengan menyertakan menu Bantuan di jendela utama. Saat pengguna memilih item dari menu Bantuan , prosedur jendela terkait menerima pesan WM_COMMAND yang mengidentifikasi item yang dipilih. Aplikasi merespons dengan menampilkan informasi bantuan yang sesuai, seperti daftar topik bantuan, indeks, atau pengenalan aplikasi.
Bantuan dari keyboard
Windows menyediakan akses pengguna untuk membantu informasi dari keyboard dengan memberi tahu aplikasi setiap kali pengguna menekan tombol F1. Sistem mengirim pesan WM_HELP ke jendela yang memiliki fokus keyboard saat pengguna menekan tombol. Jika jendela adalah jendela anak (misalnya, kontrol dalam kotak dialog), fungsi DefWindowProc meneruskan pesan ke jendela induk. Jika menu aktif saat F1 ditekan, sistem akan mengirim pesan ke jendela yang terkait dengan menu. Aplikasi merespons dengan menampilkan informasi bantuan yang terkait dengan jendela, kontrol, atau menu yang memiliki fokus atau aktif. Misalnya, jika pengguna memilih kontrol dalam kotak dialog dan menekan F1, aplikasi menampilkan informasi bantuan untuk kontrol tersebut.
Parameter lParam dari WM_HELP adalah penunjuk ke struktur HELPINFO yang berisi informasi terperinci tentang item yang bantuannya diminta. Anda menggunakan informasi ini untuk menentukan topik bantuan yang akan ditampilkan. Struktur HELPINFO juga mencakup koordinat kursor mouse pada saat pengguna menekan tombol. Anda dapat menggunakan informasi ini untuk memberikan bantuan berdasarkan lokasi kursor mouse.
Bantuan dari mouse
Windows menyediakan akses pengguna untuk membantu informasi dari mouse dengan memberi tahu aplikasi setiap kali pengguna mengklik tombol kanan mouse atau mengklik jendela, kontrol, atau menu setelah mengklik tombol Pertanyaan (?). Aplikasi merespons dengan menampilkan informasi bantuan yang terkait dengan jendela, kontrol, atau menu yang diberikan.
Sistem mengirim pesan WM_CONTEXTMENU ketika pengguna mengklik tombol kanan mouse. Jendela yang diklik menerima pesan. Jika jendela adalah jendela anak, seperti kontrol, fungsi DefWindowProc meneruskan pesan ke jendela induk. Pesan WM_CONTEXTMENU menentukan koordinat kursor mouse. Koordinat x berada dalam kata berurutan rendah dari parameter lParam , dan koordinat y berada dalam kata urutan tinggi. Jika pengguna mengklik kontrol, parameter wParam adalah handel ke kontrol yang menerima klik.
Sistem mengirim pesan WM_HELP ketika pengguna mengklik item di jendela setelah mengklik tombol Pertanyaan (?) yang muncul di bilah judul jendela. Anda dapat menambahkan tombol Pertanyaan ke bilah judul dengan menentukan gaya WS_EX_CONTEXTHELP dalam fungsi CreateWindowEx saat membuat jendela. Parameter lParam dari WM_HELP adalah penunjuk ke struktur HELPINFO yang berisi informasi terperinci tentang item yang bantuannya diminta, termasuk koordinat kursor mouse pada saat pengguna mengklik tombol mouse.
Tombol Pertanyaan disarankan untuk digunakan dalam kotak dialog saja. Di masa lalu, aplikasi telah menyediakan akses pengguna untuk membantu informasi tentang kotak dialog dengan menyediakan tombol Bantuan dalam kotak dialog. Metode ini tidak lagi disarankan. Gunakan tombol Pertanyaan sebagai gantinya.
Tampilan Bantuan dan Bantuan Windows
Setelah aplikasi menerima permintaan bantuan, aplikasi akan menampilkan informasi bantuan yang sesuai. Karena aplikasi Bantuan Windows menyediakan antarmuka pengguna yang konsisten, disarankan agar aplikasi menggunakan Bantuan Windows daripada metode lain. Untuk mengarahkan Bantuan Windows untuk menampilkan informasi bantuan, aplikasi menggunakan fungsi WinHelp , menentukan detail seperti informasi yang akan ditampilkan dan bentuk jendela untuk menampilkannya. Bagian berikut menjelaskan cara menggunakan WinHelp untuk menampilkan informasi bantuan.
File bantuan
Untuk melihat informasi bantuan, Anda harus menentukan file bantuan saat memanggil fungsi WinHelp . File bantuan harus memiliki format file Bantuan Windows (.hlp) dan satu atau beberapa topik. Setiap topik adalah unit informasi yang berbeda, seperti deskripsi konseptual, serangkaian instruksi, gambar, definisi glosarium, dan sebagainya. Topik harus diidentifikasi secara unik sehingga Bantuan Windows dapat menemukannya setiap kali diminta. Secara internal, Bantuan Windows menggunakan pengidentifikasi topik untuk menemukan topik, tetapi aplikasi paling sering menggunakan pengidentifikasi konteks (nilai bilangan bulat unik) untuk menentukan topik yang akan ditampilkan. Pembuat file bantuan harus secara eksplisit memetakan pengidentifikasi konteks ke pengidentifikasi topik di bagian [MAP] dari file proyek yang digunakan untuk membangun file bantuan.
Saat Anda menentukan file bantuan tetapi Anda tidak menentukan jalur, WinHelp mencari file bantuan di direktori bantuan atau dalam direktori yang ditentukan oleh variabel lingkungan PATH. Selain itu, WinHelp dapat menemukan file bantuan yang namanya tercantum di lokasi registri berikut:
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
Help
Untuk memanfaatkan registri, Anda harus membuat nama nilai yang memiliki nama yang sama dengan file bantuan Anda. Nilai yang ditetapkan ke nama tersebut harus berupa direktori tempat file bantuan berada.
Jika WinHelp tidak dapat menemukan file bantuan yang diberikan, maka akan menampilkan kotak dialog yang memungkinkan pengguna menentukan lokasi file bantuan. Karena WinHelp menyimpan informasi lokasi di registri, WinHelp tidak meminta lagi lokasi file bantuan yang sama.
Untuk informasi selengkapnya tentang cara menulis dan membuat file bantuan, lihat dokumentasi yang disediakan dengan alat pengembangan Anda.
Memulai Bantuan Windows
Contoh berikut menggunakan fungsi WinHelp untuk memulai aplikasi Bantuan Windows dan membuka file bantuan ke topik Kontennya.
HWND hwnd; // main window handle
BOOL bResult // for checking Boolean function result
bResult = WinHelp(hWnd, "WINNT.HLP", HELP_CONTENTS, 0L);
Contoh berikutnya ini membuka file bantuan pengguna, mencari file untuk topik yang terkait dengan string kata kunci, lalu menampilkan topik.
HWND hwnd; // main window handle
BOOL bResult // for checking Boolean function result
bResult = WinHelp(hWnd, "WINNT.HLP", HELP_KEY, (DWORD) "finding topics");
Kotak dialog Topik Bantuan
Anda bisa menampilkan kotak dialog Topik Bantuan dengan memanggil fungsi WinHelp dengan perintah HELP_FINDER . Kotak dialog Topik Bantuan memungkinkan pengguna memilih topik untuk ditampilkan dengan melihat judul topik, kata kunci yang terkait dengan topik, atau kata dan frasa yang ditemukan dalam topik. Aplikasi biasanya menampilkan kotak dialog ini saat pengguna memilih perintah, seperti Topik Bantuan, dari menu Bantuan. Aplikasi juga dapat menampilkan kotak dialog ini jika pengguna menekan tombol ketika tidak ada jendela, kontrol, atau menu tertentu dalam aplikasi yang memiliki fokus atau aktif.
Di masa lalu, aplikasi telah menggunakan perintah HELP_CONTENTS dan HELP_INDEX dengan fungsi WinHelp untuk menampilkan topik Konten dan indeks kata kunci file Bantuan. Perintah ini tidak lagi direkomendasikan. Gunakan perintah HELP_FINDER sebagai gantinya.
Topik informasi
Anda dapat menampilkan topik tertentu dengan memanggil fungsi WinHelp dengan perintah HELP_CONTEXT dan menentukan pengidentifikasi konteks untuk topik tersebut. Aplikasi biasanya menggunakan perintah HELP_CONTEXT sebagai respons terhadap permintaan pengguna untuk topik yang berisi informasi konseptual atau bantuan prosedural daripada informasi tentang kontrol atau menu tertentu. Dalam kasus seperti itu, pengguna dapat terus menelusuri file bantuan mencari informasi terkait sebelum kembali ke aplikasi.
Perintah HELP_CONTEXT memanggil instans Bantuan Windows reguler, memungkinkan pengguna untuk menemukan topik lain dalam file bantuan. Biasanya menampilkan jendela Bantuan utama, yang mencakup bilah judul, menu sistem, meminimalkan dan memaksimalkan tombol, menu utama, bilah navigasi opsional, batas ukuran, dan area klien. Teks topik yang dipilih muncul di area klien, dan pengguna dapat menavigasi melalui file bantuan dengan menggunakan tautan panas atau tombol navigasi di jendela utama. Instans reguler Bantuan Windows juga dapat digunakan untuk menampilkan bantuan di satu atau beberapa jendela sekunder alih-alih jendela utama.
Topik pop-up
Anda dapat menampilkan topik pop-up yang berisi informasi untuk kontrol atau menu tertentu dengan memanggil fungsi WinHelp dengan perintah HELP_WM_HELP atau HELP_CONTEXTMENU. Perintah ini menampilkan topik di jendela pop-up di dekat kontrol atau menu yang sesuai. Untuk membiarkan pengguna segera kembali bekerja di aplikasi, jendela pop-up dihancurkan segera setelah pengguna menekan tombol atau mengklik tombol mouse kiri.
Anda menggunakan perintah HELP_WM_HELP saat memproses pesan WM_HELP untuk jendela kontrol. Karena sebagian besar kontrol meneruskan pesan WM_HELP ke fungsi DefWindowProc , prosedur kotak dialog terkait (atau prosedur jendela induk) memproses pesan ini. Daripada memberikan pengidentifikasi konteks tertentu, prosedur kotak dialog harus meneruskan array pasangan pengidentifikasi kontrol dan konteks ke WinHelp bersama dengan handel kontrol yang ditentukan dalam anggota hItemHandle dari struktur HELPINFO yang diteruskan dengan pesan WM_HELP . Fungsi menentukan pengidentifikasi kontrol tempat pesan WM_HELP dibuat dan menggunakan pengidentifikasi konteks yang cocok untuk menampilkan topik yang sesuai.
Anda menggunakan perintah HELP_CONTEXTMENU saat memproses pesan WM_CONTEXTMENU . Karena sebagian besar kontrol meneruskan pesan WM_CONTEXTMENU ke fungsi DefWindowProc , prosedur kotak dialog terkait (atau prosedur jendela induk) memproses pesan ini. Prosedur ini menentukan array pasangan pengidentifikasi kontrol dan konteks; ini juga menentukan handel dalam parameter wParam saat memanggil WinHelp sehingga fungsi dapat memilih pengidentifikasi konteks yang sesuai dari array dan menampilkan topik yang sesuai. Tidak seperti perintah HELP_WM_HELP, HELP_CONTEXTMENU pertama-tama menampilkan perintah Apa Ini? di menu. Jika pengguna memilih perintah, WinHelp akan menampilkan topik. Jika tidak, permintaan dibatalkan.
Anda juga dapat menampilkan topik pop-up dengan menggunakan perintah HELP_CONTEXTPOPUP dan menentukan pengidentifikasi konteks topik. Perintah ini mirip dengan perintah HELP_CONTEXT tetapi memanggil instans pop-up Bantuan Windows yang digunakan oleh HELP_WM_HELP dan HELP_CONTEXTMENU. Aplikasi dapat menggunakan perintah ini sebagai respons terhadap pesan WM_HELP untuk menampilkan bantuan menu dan untuk jendela yang tidak dikontrol dalam kotak dialog. Untuk menggunakan perintah ini secara paling efektif, aplikasi harus menetapkan pengidentifikasi konteks ke menu dan jendela ini.
Anda dapat menetapkan pengidentifikasi konteks ke jendela atau menu apa pun di aplikasi. Ketika pesan WM_HELP dihasilkan, sistem menyertakan pengidentifikasi konteks dalam struktur HELPINFO yang diteruskan ke jendela induk dalam pesan WM_HELP . Jendela induk kemudian dapat meneruskan pengidentifikasi konteks ke WinHelp untuk menampilkan topik bantuan yang diminta.
Anda menggunakan fungsi SetWindowContextHelpId untuk menetapkan pengidentifikasi konteks ke jendela atau kontrol dan fungsi SetMenuContextHelpId untuk menetapkan pengidentifikasi konteks ke menu. Anda dapat mengambil pengidentifikasi konteks untuk jendela atau menu dengan menggunakan fungsi GetWindowContextHelpId atau GetMenuContextHelpId .
Pencarian kata kunci
Anda dapat memungkinkan pengguna untuk menemukan dan melihat topik dengan menetapkan kata kunci ke topik dalam file bantuan. Kata kunci hanyalah string yang terkait dengan satu atau beberapa topik. Bantuan Windows mengumpulkan semua kata kunci dalam file bantuan, menempatkannya dalam tabel, dan menampilkannya dalam daftar Indeks kotak dialog Topik Bantuan . Ketika pengguna memilih kata kunci, Bantuan Windows menampilkan topik bantuan terkait atau, jika ada lebih dari satu topik yang terkait dengan kata kunci, menampilkan daftar topik yang dapat dipilih pengguna.
Dalam aplikasi, Anda dapat menggunakan perintah HELP_KEY, HELP_PARTIALKEY, atau HELP_MULTIKEY dengan fungsi WinHelp untuk mencari dan menampilkan topik bantuan berdasarkan kata kunci utuh atau sebagian. Anda menentukan perintah, string kata kunci, file bantuan, dan handel ke jendela pemilik. Dalam semua kasus, jika satu kecocokan ditemukan, WinHelp menampilkan topik yang sesuai. Jika lebih dari satu kecocokan ditemukan, fungsi menampilkan kotak dialog Topik Ditemukan, dan pengguna dapat memilih topik mana yang akan ditampilkan. Jika tidak ada kecocokan yang ditemukan, WinHelp menampilkan daftar Indeks (untuk HELP_KEY dan HELP_PARTIALKEY) atau menampilkan pesan kesalahan (untuk HELP_MULTIKEY).
Aplikasi Anda dapat mencari beberapa kata kunci dalam satu panggilan ke WinHelp dengan memisahkan kata kunci dengan titik koma. (Mencari beberapa kata kunci tidak didukung untuk file bantuan yang dibuat untuk Windows versi 3. x) Ini juga dapat mencari kata kunci di beberapa file bantuan jika file bantuan yang ditentukan memiliki file contents(.cnt) yang berisi perintah :Index atau :Link. Dengan perintah HELP_KEY, WinHelp mencari kata kunci di semua file yang ditentukan oleh perintah ini. Dengan perintah HELP_MULTIKEY dan HELP_PARTIALKEY, fungsi mencari semua file kecuali yang ditentukan oleh perintah :Link.
Secara default, Bantuan Windows hanya mengenali tabel kata kunci yang diidentifikasi oleh karakter catatan kaki K dalam file sumber bantuan. Anda dapat mengarahkan Bantuan Windows untuk membuat tabel kata kunci tambahan dengan menambahkan karakter catatan kaki selain K, dengan definisi kata kunci, dalam file sumber bantuan. (Namun, karakter catatan kaki A dicadangkan.) Anda harus menentukan tabel kata kunci tambahan dengan menggunakan pernyataan MULTIKEY di bagian [OPTIONS] dari file proyek saat membuat file bantuan.
Aplikasi dapat menggunakan perintah HELP_SETINDEX dengan fungsi WinHelp untuk mengarahkan Bantuan Windows untuk menampilkan tabel kata kunci selain K dalam daftar Indeksnya. Untuk mengarahkan Bantuan Windows untuk mencari kata kunci dalam tabel kata kunci alternatif, aplikasi dapat menggunakan perintah HELP_MULTIKEY. Anda menentukan kata kunci dan tabel kata kunci dalam struktur MULTIKEYHELP , yang Anda berikan ke WinHelp.
Ketika WinHelp menampilkan topik, winHelp menampilkannya di jendela yang ditentukan oleh catatan kaki ">" untuk topik tersebut, di jendela yang ditentukan oleh perintah :Base dalam file konten, atau di jendela utama. Jika jendela utama sudah terbuka ke file bantuan yang berbeda saat Anda memanggil WinHelp, fungsi menyembunyikan jendela utama saat mencari. Dalam hal ini, membatalkan kotak dialog Topik Ditemukan dan Topik Bantuan menutup jendela utama.
Jendela Bantuan Sekunder
Jendela utama aplikasi Bantuan Windows disebut jendela utama. Bantuan Windows juga bisa menampilkan topik bantuan di jendela sekunder. Tidak seperti jendela Bantuan utama, jendela sekunder tidak berisi bilah menu. Anda dapat menyertakan bilah navigasi di jendela sekunder, dan Anda dapat menambahkan tombol ke bilah. Anda juga dapat memilih agar Bantuan Windows secara otomatis menyesuaikan tinggi jendela sekunder untuk mengakomodasi topik.
Anda harus menentukan jendela sekunder di bagian [WINDOWS] dari file proyek bantuan Anda, memberikan nama dan, secara opsional, ukuran awal dan posisi setiap jendela. Anda dapat mengarahkan aplikasi Bantuan Windows untuk menampilkan topik di jendela sekunder dengan menambahkan kurung sudut (>) dan nama yang telah Anda tentukan untuk jendela sekunder ke nama file bantuan. String yang dihasilkan kemudian diteruskan ke fungsi WinHelp .
Aplikasi dapat mengubah ukuran dan posisi jendela primer atau sekunder dengan menentukan alamat struktur HELPWININFO dan perintah HELP_SETWINPOS dalam panggilan ke WinHelp. HELPWININFO menentukan nama jendela dan ukuran dan posisi barunya.
Bantuan kartu pelatihan
Dengan menggunakan bantuan kartu pelatihan, aplikasi dapat menampilkan urutan instruksi untuk memandu pengguna melalui langkah-langkah tugas. Kartu pelatihan biasanya terdiri dari teks yang menjelaskan langkah dan tombol tertentu yang terkait dengan makro TCard, yang memungkinkan pengguna untuk memberi tahu aplikasi apa yang harus dilakukan selanjutnya. Kartu pelatihan hanya dapat ditampilkan di jendela sekunder dan tidak boleh berisi tautan panas ke topik lain dalam file bantuan.
Aplikasi memulai instans kartu pelatihan Bantuan Windows dengan memanggil fungsi WinHelp dan menentukan perintah HELP_TCARD dalam kombinasi dengan perintah lain, seperti HELP_CONTEXT. Selanjutnya, ketika pengguna mengklik tombol di kartu pelatihan, mengklik hot spot yang ditetapkan ke makro TCard, atau menutup kartu pelatihan, Bantuan Windows memberi tahu aplikasi dengan mengirimkannya pesan WM_TCARD . Parameter wParam mengidentifikasi tombol atau tindakan pengguna, dan parameter lParam berisi data tambahan, yang artinya tergantung pada nilai wParam.
Membatalkan Bantuan
Bantuan Windows memerlukan aplikasi untuk membatalkan bantuan secara eksplisit sehingga dapat membebaskan sumber daya apa pun yang digunakan untuk melacak aplikasi dan file bantuannya. Aplikasi dapat melakukan ini kapan saja dengan memanggil fungsi WinHelp dan menentukan perintah HELP_QUIT. Perhatikan bahwa ini tidak benar untuk contoh pop-up Bantuan Windows. Aplikasi tidak boleh mencoba menutup instans pop-up.
Jika aplikasi telah melakukan panggilan ke WinHelp, aplikasi harus membatalkan bantuan sebelum menutup jendela utamanya (misalnya, sebagai respons terhadap pesan WM_DESTROY dalam prosedur jendela utama). Aplikasi perlu memanggil WinHelp hanya sekali untuk membatalkan bantuan, tidak peduli berapa banyak file bantuan yang telah dibukanya. Bantuan Windows tetap berjalan hingga semua aplikasi atau DLL membatalkan bantuan.
Untuk menutup instans kartu pelatihan Bantuan Windows, Anda harus menentukan perintah HELP_TCARD dan HELP_QUIT saat memanggil WinHelp. Aplikasi tidak perlu membatalkan instans kartu pelatihan Bantuan Windows jika pengguna membatalkannya terlebih dahulu. Bantuan Windows memberi tahu aplikasi ketika pengguna membatalkan instans kartu pelatihan dengan mengirim pesan WM_TCARD dengan parameter wParam yang diatur ke IDCLOSE.
Menggunakan Bantuan
Bagian ini memperlihatkan cara memberikan bantuan sensitif konteks untuk kotak dialog dan cara mengatur tampilan jendela Bantuan sekunder.
Memberikan Bantuan dalam Kotak Dialog
Untuk memberikan bantuan sensitif konteks dalam kotak dialog, Anda harus membuat array yang terdiri dari pasangan nilai DWORD . Nilai pertama di setiap pasangan adalah pengidentifikasi kontrol dalam kotak dialog, dan yang kedua adalah pengidentifikasi konteks topik bantuan untuk kontrol. Array harus berisi satu pasang pengidentifikasi untuk setiap kontrol dalam kotak dialog.
Prosedur kotak dialog harus memproses pesan WM_HELP dan WM_CONTEXTMENU . Prosedur kotak dialog menerima WM_HELP ketika pengguna menekan tombol dan WM_CONTEXTMENU saat pengguna mengklik tombol kanan mouse.
Parameter lParamdari WM_HELP berisi alamat struktur HELPINFO . Anggota hItemHandle dari struktur ini mengidentifikasi kontrol tempat pengguna meminta bantuan. Anda harus meneruskan handel ini ke fungsi WinHelp bersama dengan perintah HELP_WM_HELP, nama file bantuan Anda, dan penunjuk ke array pengidentifikasi. Fungsi WinHelp mencari array untuk pengidentifikasi kontrol kontrol yang ditentukan lalu mengambil pengidentifikasi konteks bantuan yang sesuai. Selanjutnya, fungsi meneruskan pengidentifikasi konteks bantuan ke Bantuan Windows, yang menemukan topik yang sesuai dan menampilkannya di jendela pop-up. Jika kontrol memiliki pengidentifikasi -1, sistem mencari kontrol berikutnya yang merupakan perhentian tab lalu menggunakan pengidentifikasinya untuk menemukan pengidentifikasi konteks bantuan. Untuk alasan ini, penting bagi Anda untuk menempatkan teks statis sebelum mengontrol dalam file sumber daya.
Saat memanggil fungsi WinHelp , pemrosesan WM_CONTEXTMENU mirip dengan memproses WM_HELP dengan dua pengecualian ini:
- Anda meneruskan parameter wParam dari WM_CONTEXTMENU, yang merupakan handel ke kontrol yang mengirim pesan.
- Anda menentukan perintah HELP_CONTEXTMENU alih-alih HELP_WM_HELP.
Perintah HELP_CONTEXTMENU menyebabkan Bantuan Windows menampilkan menu sebelum menampilkan topik bantuan. Menu ditentukan sistem. Ini memungkinkan pengguna untuk menampilkan bantuan untuk kontrol atau menampilkan kotak dialog Topik Bantuan .
Contoh berikut menunjukkan cara mengimplementasikan bantuan sensitif konteks dalam kotak dialog.
LRESULT CALLBACK EditDlgProc(HWND hwndDlg, UINT uMsg,
WPARAM wParam, LPARAM lParam)
{
// Create an array of control identifiers and context identifiers.
static DWORD aIds[ ] =
{
ID_SAVE, IDH_SAVE,
ID_DELETE, IDH_DELETE,
ID_COPY, IDH_COPY,
ID_PASTE, IDH_PASTE,
0,0
};
switch (uMsg)
{
case WM_HELP:
WinHelp(((LPHELPINFO)lParam)->hItemHandle, "helpfile.hlp",
HELP_WM_HELP, (DWORD)(LPSTR)aIds);
break;
case WM_CONTEXTMENU:
WinHelp((HWND)wParam, "helpfile.hlp", HELP_CONTEXTMENU,
(DWORD)(LPVOID)aIds);
break;
// Process other messages here.
}
return FALSE;
}
Mengatur Tampilan Jendela Bantuan Sekunder
Aplikasi dapat mengatur ukuran, posisi, dan menunjukkan status jendela bantuan sekunder dengan meneruskan perintah HELP_SETWINPOS dan alamat struktur HELPWININFO ke fungsi WinHelp . Anggota HELPWININFO menentukan nama jendela yang akan diubah dan ukuran, posisi, dan status tampilan jendela baru.
Contoh berikut menetapkan tampilan jendela sekunder bernama "wnd_menu". Nama harus didefinisikan di bagian [WINDOWS] dari file proyek bantuan.
BOOL DoWindowSize(VOID)
{
HANDLE hhwi;
LPHELPWININFO lphwi;
WORD wSize;
char *szWndName = "wnd_menu";
size_t NameLength; // Does not include the terminating null character
HRESULT hr
BOOL retval;
hr = StringCbLengthA(szWndName, STRSAFE_MAX_CCH, &NameLength);
if (SUCCEEDED(hr))
{
// Add 1 to account for the name string's terminating null character.
NameLength++;
// The HELPWININFO structure contains a minimal TCHAR array of size [2]
// that is used for the window name. Since sizeof(HELPWININFO)
// includes those two TCHARS, they must be subtracted from the
// total when adding the actual string length to calculate the
// size of the structure.
wSize = sizeof(HELPWININFO) - 2 + NameLength;
}
else
// Something's amiss with the string.
return FALSE;
hhwi = GlobalAlloc(GHND, wSize);
lphwi = (LPHELPWININFO)GlobalLock(hhwi);
lphwi->wStructSize = wSize;
lphwi->x = 256; // horizontal position
lphwi->y = 256; // vertical position
lphwi->dx = 767; // width
lphwi->dy = 512; // height
lphwi->wMax = SW_SHOW; // show the window
// secondary window
hr = StringCbCopyA(lphwi->rgchMember, sizeof(lphwi->rgchMember), szWndName);
if (SUCCEEDED(hr))
{
WinHelp(hwnd, "myhelp.hlp", HELP_SETWINPOS, (DWORD)lphwi);
GlobalUnlock(hhwi);
GlobalFree(hhwi);
return TRUE;
}
else
// There was a problem copying the window name.
return FALSE;
}