锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鐢╓in32 Dynamic-Link Library
Non-MFC DLL
嫻嬭瘯鐢ㄤ緥->
鏂規(guī)硶涓錛?br />Test_NonMFCDLL.h錛?br />extern "C" _declspec(dllexport)聽(tīng)double Add(double a, double b);
extern "C" _declspec(dllexport) double Mult(double a, double b);
Test_NonMFCDLL.cpp錛?br />#include"Test_NonMFCDLL.h"
double聽(tīng) Add(double a, double b)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)return (a+b);
聽(tīng)}
double聽(tīng) Mult(double a, double b)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)return (a*b);
}
Test_NonMFCDLL.dll,Test_NonMFCDLL.lib
鏂規(guī)硶浜岋細(xì)
Test_NonMFCDLL.hTest_NonMFCDLL.def
LIBRARY Test_NonMFCDLL
EXPORTS
Add聽(tīng)聽(tīng)@1聽(tīng)聽(tīng)聽(tīng)聽(tīng) //涓棿瑕佹湁涓┖鏍?br />Mult聽(tīng) @2
鐜板湪灝辨祴璇曚竴涓嬩綘鎵鍐欑殑dll,Test_NonMFCDLL.dllTest_NonMFCDLL.lib1闅愬紡閾炬帴
UseDLL.h錛?br />
#pragma comment(lib,"Test_NonMFCDLL.lib")
extern "C"_declspec(dllimport) double Add(double a,double b);
extern "C"_declspec(dllimport)聽(tīng)double Mult(double a,double b);
UseDLL.cpp:
#include"TestUseDLL.h"
#include<stdio.h>
void main()
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)double res=Add(1.0,2.0);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)printf("%f\n",res);
}
2 .
UseDLL.cpp:
#include<stdio.h>
#include<windows.h>
void main(void)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)typedef聽(tīng) double (*p)聽(tīng)聽(tīng)聽(tīng) (double a,double b);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)p Add;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)HINSTANCE hDLL;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)hDLL=LoadLibrary("Test_NonMFCDLL.dll");// 鍔犺澆鍔ㄦ侀摼鎺ュ簱dll 鏂囦歡錛浡?br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)Add=(p)GetProcAddress(hDLL,"Add");
聽(tīng)聽(tīng)聽(tīng) /*鎴栦嬌鐢℅etProcAddress(hDLL,MAKEINTRESOURCE(1))聽(tīng)錛岀湅涓婇潰鐨凙dd聽(tīng)聽(tīng)@1*/
聽(tīng)聽(tīng)聽(tīng)聽(tīng)double res=Add(1.0,2.0);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)printf("%f\n",res);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)FreeLibrary(hDLL);// 鍗歌澆dll 鏂囦歡錛?
}
#define _WIN32_WINNT 0x0400
#include
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WPARAM wParam, LPARAM lParam)
{
聽(tīng)BOOL fEatKeystroke = FALSE;
聽(tīng)
聽(tīng)if (nCode == HC_ACTION) {
聽(tīng) switch (wParam) {
聽(tīng) case WM_KEYDOWN:聽(tīng)
聽(tīng) case WM_SYSKEYDOWN:
聽(tīng) case WM_KEYUP:聽(tīng)聽(tīng)聽(tīng)
聽(tīng) case WM_SYSKEYUP:
聽(tīng)聽(tīng) PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
聽(tīng)聽(tīng) fEatKeystroke =
聽(tīng)聽(tīng)聽(tīng) ((p->vkCode == VK_TAB)聽(tīng)聽(tīng)聽(tīng) &&聽(tīng) ((p->flags & LLKHF_ALTDOWN) != 0)) ||
聽(tīng)聽(tīng)聽(tīng) ((p->vkCode == VK_ESCAPE) &&聽(tīng) ((p->flags & LLKHF_ALTDOWN) != 0)) ||
聽(tīng)聽(tīng)聽(tīng) ((p->vkCode == VK_ESCAPE) &&聽(tīng) ((GetKeyState(VK_CONTROL)&0x8000) != 0))||
聽(tīng)聽(tīng)聽(tīng) ( p->vkCode == VK_LWIN)聽(tīng)聽(tīng) ||聽(tīng) ( p->vkCode==VK_RWIN )
聽(tīng)聽(tīng)聽(tīng) ;
聽(tīng)聽(tīng) break;
聽(tīng) }
聽(tīng)}
聽(tīng)return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam,
聽(tīng) lParam));
}
int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Install the low-level keyboard & mouse hooks
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) HHOOK hhkLowLevelKybd聽(tīng) = SetWindowsHookEx(WH_KEYBOARD_LL,
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) LowLevelKeyboardProc, hinstExe, 0);
聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) // Keep this app running until we're told to stop
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) MessageBox(NULL,
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) TEXT("Alt+Esc, Ctrl+Esc, Alt+Tab, LWIN and RWIN are now disabled.\n")聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) TEXT("Click \"Ok\" to terminate this application and re-enable these keys."),
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) TEXT("Disable Low-Level Keys"),
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) MB_OK);
聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) UnhookWindowsHookEx(hhkLowLevelKybd);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) return(0);
}
1.2 緋葷粺鐑敭
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 1.灞忚斀:SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,true錛?, SPIF_UPDATEINIFILE);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 2.鎭㈠:SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,false,聽(tīng) 0, SPIF_UPDATEINIFILE);
1.3 妯℃嫙鎸夐敭
聽(tīng) 璁╃郴緇熸ā鎷熶竴嬈℃寜涓媁IN+D閿?
聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) keybd_event(VK_LWIN,0,0,0);聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) keybd_event('D',0,0,0);聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0);聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) keybd_event('D',0,KEYEVENTF_KEYUP,0);
1.4 鍒囨崲鍒板綋鍓嶆闈?/p>
妯℃嫙鏈灝忓寲灞忓箷蹇嵎閿甒indow+D聽(tīng)
聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) keybd_event(VK_LWIN,0,0,0);聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) keybd_event('D',0,0,0);聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0);聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) keybd_event('D',0,KEYEVENTF_KEYUP,0);聽(tīng)
---------------------------------------------------------------聽(tīng)
聽(tīng)
姝g粺鐨勫姙娉曞涓嬶細(xì)聽(tīng)
聽(tīng)
#include聽(tīng)聽(tīng)聽(tīng)
#include聽(tīng)聽(tīng)聽(tīng)
聽(tīng)
int聽(tīng) main聽(tīng) ()聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) {聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) CoInitialize聽(tīng) (0);聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) IShellDispatch4聽(tīng) *pdisp聽(tīng) =聽(tīng) NULL;聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) CoCreateInstance聽(tīng) (CLSID_Shell,聽(tīng) NULL,聽(tīng) CLSCTX_ALL,聽(tīng) __uuidof聽(tīng) (IShellDispatch4),聽(tīng) (void聽(tīng) **)&pdisp);聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) pdisp->ToggleDesktop聽(tīng) ();聽(tīng) //聽(tīng) 榪欏彞鏄敤鏉ュ垏鎹㈡闈㈢殑聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) pdisp->Release聽(tīng) ();聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) CoUninitialize聽(tīng) ();聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) };
1.5 璋冨嚭鍏蟲(chóng)満閫夋嫨鐢婚潰
////////璋冨嚭鍏蟲(chóng)満閫夋嫨鐢婚潰錛氾紙閲嶅惎銆佸叧鏈恒佷紤鐪犮佸緟鏈猴級(jí)聽(tīng)
typedef聽(tīng) int聽(tīng) (CALLBACK聽(tīng) *SHUTDOWNDLG)(int);聽(tīng) //鏄劇ず鍏蟲(chóng)満瀵硅瘽妗嗗嚱鏁扮殑鎸囬拡聽(tīng)
HINSTANCE聽(tīng) hInst聽(tīng) =聽(tīng) LoadLibrary("shell32.dll");聽(tīng) //瑁呭叆shell32.dll聽(tīng)
SHUTDOWNDLG聽(tīng) ShutDownDialog;聽(tīng) //鎸囧悜shell32.dll搴撲腑鏄劇ず鍏蟲(chóng)満瀵硅瘽妗嗗嚱鏁扮殑鎸囬拡聽(tīng)
if(hInst聽(tīng) !=聽(tīng) NULL)聽(tīng)
{聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鑾峰緱鍑芥暟鐨勫湴鍧騫惰皟鐢ㄤ箣聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ShutDownDialog聽(tīng) =聽(tīng) (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) (*ShutDownDialog)(0);聽(tīng)
}聽(tīng)
浜?榧犳爣
2.1聽(tīng)聽(tīng) ::ClipCursor(&rect);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ::ClipCursor(NULL);
2.2 涓涓湭鍏紑鐨凙PI鍑芥暟BlockInput錛屽湪user32.dll涓紝鐢ㄥ畠鍙互
杞繪槗鐨勯攣瀹氶敭鐩樺拰榧犳爣銆?/p>
BOOL __stdcall (*BlockInput)(BOOL Flag);
(FARPROC)BlockInput = GetProcAddress(GetModuleHandle(
聽(tīng)聽(tīng)聽(tīng) "user32.dll"), "BlockInput");
if (BlockInput) BlockInput(TRUE); //榪欐牱灝卞彲浠ヤ簡(jiǎn)
涓?鏄劇ず鍣?/p>
聽(tīng)聽(tīng) 3.1 鍏抽棴鏄劇ず鍣?br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 1. SendMessage( WM_SYSCOMMAND, SC_MONITORPOWER, 2);//鍏蟲(chóng)樉紺哄櫒
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) SendMessage( WM_SYSCOMMAND, SC_SCREENSAVE, 0);//榪愯灞忎繚
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 2. ::SendMessage(GetSafeHwnd(), WM_SYSCOMMAND, SC_MONITORPOWER, 2);
聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 3. SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2);
聽(tīng)聽(tīng) 3.2 鍚姩灞忎繚
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) PostMessage(WM_SYSCOMMAND,SC_SCREENSAVE,0);
鍥?緋葷粺妗岄潰
聽(tīng) 4.1 闅愯棌浠誨姟鏍?
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 闅愯棌 ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_HIDE);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) or ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_HIDE);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 鏄劇ず ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_SHOW);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) or ::ShowWindow (::FindWindow("Shell_TrayWnd",NULL),SW_SHOW);
聽(tīng)聽(tīng) 4.2 鍦ㄤ換鍔℃爮闅愯棌
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) SetWindowLong(Application,Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
聽(tīng)聽(tīng) 4.3鍦ㄤ換鍔$鐞嗗櫒涓殣钘?br />//瀹氫箟RegisterServiceProcess鍑芥暟鐨勫師鍨?
typedef DWORD (CALLBACK* LPREGISTERSERVICEPROCESS)(DWORD,DWORD);
//娉ㄥ唽搴旂敤紼嬪簭鐨勮繘紼?
//鍏朵腑i = 0錛屽皢榪涚▼娉ㄥ唽鎴愰潪鏈嶅姟榪涚▼錛岃繖鏍鳳紝鍦╓indows鐨勫叧闂▼搴忕獥鍙d腑灝變笉浼?xì)鍑虹幇搴旂敤绋嬪?
//鐨勫悕縐頒簡(jiǎn)銆?
// i = 1錛屽皢榪涚▼娉ㄥ唽鎴愭湇鍔¤繘紼嬶紝榪欐槸涓鑸簲鐢ㄧ▼搴忚繍琛屾椂鎵閲囩敤鐨勭姸鎬併?
void RegisterProcess(int i)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) HINSTANCE hDLL;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鍔犺澆RegisterServiceProcess鍑芥暟鎵鍦ㄧ殑閾炬帴搴?
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) hDLL = LoadLibrary("KERNEL32");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //寰楀埌RegisterServiceProcess鍑芥暟鐨勫湴鍧
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL, "RegisterServiceProcess");
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鎵цRegisterServiceProcess鍑芥暟
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) lpRegisterServiceProcess(GetCurrentProcessId(),i);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) //鍗歌澆閾炬帴搴?
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) FreeLibrary(hDLL);
}
聽(tīng)
4.4鍚姩灞忎繚
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"C:\\*.BMP",WM_WININICHANGE);
涓涓彞鏌勬爣璇嗕竴涓猈indows浣跨敤鐨勫敮涓鏁存暟鏁板鹼紝鐢ㄦ潵鏍囪瘑搴旂敤紼嬪簭涓笉鍚屽璞″拰鍚岀被瀵硅薄涓殑涓嶅悓鐨勫疄渚嬶紝搴旂敤紼嬪簭閫氳繃鍙ユ焺鏉ヨ闂浉搴旂殑瀵硅薄淇℃伅
HWND聽(tīng) 紿楀彛鍙ユ焺
HDC聽(tīng)聽(tīng) 璁懼鐜鍙ユ焺
HINSTANCE聽(tīng)聽(tīng) 褰撳墠瀹炰緥鍙ユ焺
HBITMAP聽(tīng)聽(tīng) 浣嶅浘鍙ユ焺
HCURSOR聽(tīng)聽(tīng) 鍏夋爣鍙ユ焺
HICON聽(tīng)聽(tīng)聽(tīng)聽(tīng) 鍥炬爣鍙ユ焺
HFONT聽(tīng)聽(tīng)聽(tīng)聽(tīng) 瀛椾綋鍙ユ焺
HBRUSH聽(tīng)聽(tīng)聽(tīng) 絎斿埛鍙ユ焺
HMENU聽(tīng)聽(tīng)聽(tīng)聽(tīng) 鑿滃崟鍙ユ焺
HFILE聽(tīng)聽(tīng)聽(tīng)聽(tīng) 鏂囦歡鍙ユ焺
SDK甯哥敤鐨勬暟鎹粨鏋勶細(xì)
聽(tīng) MSG:鍖呭惈涓涓秷鎭殑鍏ㄩ儴淇℃伅
聽(tīng) WNDCLASS錛氬寘鍚獥鍙g被鐨勫叏閮ㄤ俊鎭?br />聽(tīng) RECT:鐭╁艦鍖哄煙
聽(tīng) PAINTSTRUCT:涓烘瘡涓涓獥鍙d繚瀛樹(shù)竴涓?緇樺浘淇℃伅緇撴瀯"
聽(tīng) TEXTMETRIC :瀛椾綋緇撴瀯
InvalidateRect鍜孶pdateWindow鐨勫尯鍒?
InvalidateRect鏄皢瀹㈡埛鍖烘爣璁頒負(fù)鏃犳晥錛屽茍浜х敓WM_PAINT娑堟伅錛學(xué)indows浼?xì)灏哤M_PAINT娑堟伅鏀懼叆闃熷垪錛岀瓑寰呯獥鍙h繃紼嬬殑澶勭悊錛岀劧鍚庢搷浣滅郴緇熷皢WM_PAINT褰撲綔鏄綆浼樺厛綰ф秷鎭紝濡傛灉鍚庨潰鏈夊叾浠栫殑鍔ㄤ綔瑕佸鐞嗭紝鍒欏彲鑳戒細(xì)鍑虹幇絀虹櫧鐨勫尯鍩熼渶瑕佺瓑寰呬竴孌墊椂闂存墠琚埛鏂般?br />UpdateWindow鍒欏皢瀵艱嚧鎿嶄綔緋葷粺绔嬪嵆鐢╓M_PAINT璋冪敤紿楀彛榪囩▼錛岃屼笉榪涘叆闃熷垪錛屼嬌紿楀彛寰楀埌绔嬪嵆鐨勫埛鏂般傜獥鍙h繃紼嬪畬鎴愬埛鏂板悗绔嬪嵆閫鍑猴紝W(xué)indows灝嗘帶鍒惰繑鍥炵粰UpdateWindow涔嬪悗鐨勮鍙ャ?/
if(!TranslateAccelerator(hwnd,hAccel,&msg))
鍦ㄦ秷鎭驚鐜腑錛屾埅鑾峰姞閫熼敭娑堟伅TranslateAccelerator瀵繪壘W(wǎng)M_KEYDOWN錛學(xué)M_CHAR錛學(xué)M_KEYUP搴忓垪涓庤〃涓敭鍊煎尮閰嶇殑瀛楃錛屽鏋滄壘鍒幫紝瀹冩彃鍏ヤ竴鏉M_COMMAND鍒版秷鎭槦鍒楋紝鍦ㄦ秷鎭槦鍒椾腑鐨勫懡浠D鍙互鏄姞閫熼敭琛ㄥ畾涔夌殑浠諱綍鍏ュ彛
PostQuitMessage鍑芥暟鎶曢掍竴涓猈M_QUIT娑堟伅鍒扮嚎紼嬫秷鎭槦鍒楀茍涓旂珛鍗寵繑鍥?璇ュ嚱鏁扮畝鍗曠殑閫氱煡緋葷粺綰跨▼璇鋒眰椹笂閫鍑?褰撶嚎紼嬩粠瀹冪殑娑堟伅闃熷垪鏀跺埌WM_QUIT娑堟伅鏃?灝嗛鍑?guó)檱w秷鎭驚鐜茍涓斾氦榪樻帶鍒剁粰鎿嶄綔緋葷粺.WM_QUIT娑堟伅鐨剋Param鍙傛暟浣滀負(fù)紼嬪簭閫鍑虹爜榪斿洖緇欑郴緇熷鐞?
PtInRect(&rect, point)//鍒ゆ柇鐐規(guī)槸鍚﹀湪鐭╁艦鍐?br />wsprintf(char szTitle[],"%d",i)//鎶婅緭鍑烘牸寮忓拰杈撳嚭鍙橀噺閫佸埌szTitle鏁扮粍
聽(tīng)
聽(tīng)
聽(tīng)