📄 ctlmacro.c
字号:
/*--------------------------------------------
CTLMACRO.C -- Control Macro Helper Utility
(c) Paul Yao, 1996
--------------------------------------------*/
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <richedit.h>
#include <richole.h>
#include "treeview.h"
#include "resource.h"
#include "notify.h"
#define COL_WHITE (RGB (255, 255, 255))
BOOL CALLBACK DlgProc (HWND, UINT, WPARAM, LPARAM) ;
HINSTANCE hInst ;
//-------------------------------------------------------------------
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpszCmdLine, int cmdShow)
{
hInst = hInstance ;
// Load common control library
InitCommonControls () ;
DialogBox (hInstance, MAKEINTRESOURCE (IDD_DIALOG), NULL, DlgProc) ;
return 0 ;
}
//-------------------------------------------------------------------
BOOL CALLBACK
DlgProc (HWND hwnd, UINT mMsg, WPARAM wParam, LPARAM lParam)
{
static BOOL bFirstSelection = TRUE ;
switch (mMsg)
{
case WM_INITDIALOG :
{
HICON hicon ;
HIMAGELIST himl ;
HTREEITEM hItem ;
// Add listview root items
HWND hwndCtrl = GetDlgItem (hwnd, IDC_MESSAGES) ;
tv_BuildRootFolder (hwndCtrl) ;
// Select first item
hItem = TreeView_GetFirstVisible (hwndCtrl) ;
TreeView_SelectItem (hwndCtrl, hItem) ;
// Create image list & connect to list view
himl =
ImageList_LoadBitmap (hInst,
MAKEINTRESOURCE (IDR_TVITEMS),
16,
0,
COL_WHITE) ;
TreeView_SetImageList (hwndCtrl, himl, TVSIL_NORMAL) ;
// Disable [Copy] button when no macro is present
hwndCtrl = GetDlgItem (hwnd, IDC_COPY) ;
EnableWindow (hwndCtrl, FALSE) ;
// Install icon
hicon = LoadIcon (hInst, MAKEINTRESOURCE (IDI_APP)) ;
SendMessage (hwnd, WM_SETICON, (WPARAM) (BOOL) TRUE,
(LPARAM) (HICON) hicon) ;
return TRUE ;
}
case WM_COMMAND :
switch (LOWORD (wParam))
{
// Copy macro data to clipboard
case IDC_COPY :
{
HWND hwndEdit = GetDlgItem (hwnd, IDC_MACROS) ;
Edit_SetSel (hwndEdit, 0, -1) ;
SendMessage (hwndEdit, WM_COPY, 0, 0L) ;
break ;
}
// Close dialog
case IDOK :
EndDialog (hwnd, 0) ;
break ;
// Enable & disable [Copy] button when edit changes
case IDC_MACROS :
{
WORD wNotifyCode = HIWORD (wParam) ;
if (wNotifyCode == EN_CHANGE)
{
HWND hwndEdit = (HWND) lParam ;
HWND hwndCopy = GetDlgItem (hwnd, IDC_COPY) ;
int cb = Edit_GetTextLength (hwndEdit) ;
EnableWindow (hwndCopy, cb) ;
}
break ;
}
}
return TRUE ;
case WM_NOTIFY :
{
int idCtrl = (int) wParam ;
LPNMHDR pnmh = (LPNMHDR) lParam ;
// Expand tree as required
if (pnmh->code == TVN_ITEMEXPANDING)
{
LPNM_TREEVIEW pnmtv = (LPNM_TREEVIEW) lParam ;
tv_ExpandChild (pnmh->hwndFrom, pnmtv->itemNew.lParam) ;
}
// Respond to selection of items
if (pnmh->code == TVN_SELCHANGED)
{
LPNM_TREEVIEW pnmtv = (LPNM_TREEVIEW) lParam ;
HWND hwndEdit = GetDlgItem (hwnd, IDC_MACROS) ;
// Ignore first selection request
if (bFirstSelection)
{
bFirstSelection = FALSE ;
return TRUE ;
}
// Fetch macro for leaf nodes
if (tv_FetchMacro (pnmtv->itemNew.lParam, hwndEdit))
{
Edit_SetSel (hwndEdit, 0, -1) ;
}
else
{
// Expand tree for folder nodes
TreeView_Expand (pnmh->hwndFrom,
pnmtv->itemNew.hItem,
TVE_EXPAND) ;
Edit_SetText (hwndEdit, "") ;
}
return TRUE ;
}
// Double-click means copy macro to clipboard
if (pnmh->code == NM_DBLCLK)
{
HWND hwndEdit = GetDlgItem (hwnd, IDC_MACROS) ;
HWND hwndButton = GetDlgItem (hwnd, IDC_COPY) ;
if (Edit_GetTextLength (hwndEdit) > 0)
{
FORWARD_WM_COMMAND (hwnd, IDC_COPY,
hwndButton, BN_CLICKED,
SendMessage) ;
}
}
return TRUE ;
}
default :
return FALSE ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -