ä¸ãå¨VBä¸å£°æAPIå½æ°æ两ç§æ¹æ³ï¼å¦ææ们åªå¨æ个çªä½ä¸ä½¿ç¨APIå½æ°ï¼æ们å¯ä»¥å¨çªä½ä»£ç çGeneralé¨å声æå®ï¼
声æçè¯æ³æ¯ï¼
Private Declare Function ...
Private Declare Sub.....
è¿éå¿ é¡»éç¨Private声æï¼å 为è¿ä¸ªAPIå½æ°åªè½è¢«ä¸ä¸ªçªä½å çç¨åºæè°ç¨ã
å¦ææ们çç¨åºæå¤ä¸ªçªä½ææï¼èä¸æ们éè¦å¨å¤ä¸ªçªä½ä¸ä½¿ç¨åä¸ä¸ªAPIå½æ°ï¼å°±éè¦å¨æ¨¡åä¸å£°æäºã
å æ·»å ä¸ä¸ªæ¨¡åï¼å¦å¾ç¤ºï¼ï¼
ç¶åéç¨å¦ä¸è¯æ³å£°æï¼
Public Declare Function....
Public Declare Sub....
Public声æçå«ä¹æ¯æAPIå½æ°ä½ä¸ºä¸ä¸ªå ¬å ±å½æ°æè¿ç¨ï¼å¨ä¸ä¸ªå·¥ç¨ä¸çä»»ä½ä½ç½®ï¼å æ¬ææççªä½å模åï¼é½è½ç´æ¥è°ç¨å®ã 声æå®æ¯æ们就è½å¨ç¨åºä¸ä½¿ç¨æ¤APIå½æ°äºã
äºãå¯éç¨ä»¥ä¸å ç§æ¹å¼ä½¿ç¨APIå½æ°ï¼ä»¥SetWindowPoså½æ°ä¸ºä¾ï¼
ï¼1ï¼å¿½ç¥å½æ°è¿åå¼çè°ç¨ï¼
SetWindowPos Form1.hWnd, -2 ,0 ,0 ,0, 0, 3
注ææ¤æ¶å½æ°çåæ°æ¯ä¸å æ¬å·çã
ï¼2ï¼Callæ¹æ³è°ç¨ï¼
Call SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3)
注æè¿ééè¦å ä¸æ¬å·ï¼ä½æ们ä¸ååå½æ°çè¿åå¼ã
ï¼3ï¼åå¾å½æ°è¿åå¼çè°ç¨ï¼
MyLng = SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3)
æ¤æ¶éè¦å ä¸æ¬å·ï¼èä¸æä»¬å¿ é¡»äºå å®ä¹ä¸ä¸ªåéï¼åéçç±»åä¸å½æ°è¿åå¼ç±»åç¸åï¼æ¥åå¨APIå½æ°çè¿åå¼ã
ä¸ãå 个é®é¢ç说æï¼
ï¼1ï¼å£°æä¸çLib å Alias æ¯æä¹åäº
ä¸è¬æ åµä¸WIN32APIå½æ°æ»æ¯å å«å¨Windowsç³»ç»èªå¸¦çææ¯å ¶å®å ¬å¸æä¾çå¨æè¿æ¥åºDLLä¸ï¼èDeclareè¯å¥ä¸çLibå ³é®åå°±ç¨æ¥æå®DLLï¼å¨æè¿æ¥åºï¼æ件çè·¯å¾ï¼è¿æ ·VBæè½æ¾å°è¿ä¸ªDLLæ件ï¼ç¶åæè½ä½¿ç¨å ¶ä¸çAPIå½æ°ãå¦ææ们åªæ¯ååºDLLæ件åèä¸æåºå ¶å®æ´çè·¯å¾çè¯ï¼VBä¼èªå¨å°.EXEæ件æå¨ç®å½ãå½åå·¥ä½ç®å½ãWINDOWS\SYSTEMç®å½ãWINDOWSç®å½ä¸æ寻è¿ä¸ªDLLæ件ãæ以å¦ææè¦ä½¿ç¨DLLæ件ä¸å¨ä¸è¿°å 个ç®å½ä¸çè¯ï¼æ们åºè¯¥ææå ¶å®æ´è·¯å¾ã
Aliasç¨äºæå®APIå½æ°çå«åï¼å¦ææ们è°ç¨çAPIå½æ°è¦ä½¿ç¨å符串ï¼åæ°ä¸å å«Stringåï¼çè¯ï¼Aliaså ³é®åæ¯å¿ é¡»çãè¿æ¯å 为å¨ANSIåUnicodeå符éä¸åä¸APIå½æ°çå称å¯è½æ¯ä¸ä¸æ ·çï¼ä¸ºäºä¿è¯ä¸åºç°å£°æé误ï¼æ们使ç¨Aliaså ³é®åæåºAPIå½æ°çå«åï¼ä¸è¬æ¥è¯´å¨WIN9Xå¹³å°ä¸æ们æAPIå½æ°ååå ä¸ä¸ªå¤§åAä½ä¸ºå«åå³å¯ã
ï¼2ï¼å¸¸è§çAPIåæ°ç±»åç说æ
APIå½æ°çåæ°ä¸æ常è§çæ¯é¿æ´Longåæ°æ®ç±»åï¼ä¾å¦APIä¸çå¥æãä¸äºç¹å®ç常éãå½æ°çè¿åå¼é½æ¯æ¤ç±»å çå¼ï¼å¦å¤å ç§å¸¸è§çåæ°ç±»åæï¼æ´åIntegerãByteåãStringåçã
ï¼3ï¼å£°æä¸çByValæ¯ä½ä»ä¹ç¨ç
è¿è·VBçåæ°ä¼ éæ¹å¼æå ³ï¼å¨é»è®¤æ åµä¸VBæ¯éè¿å°åä¼ éæ¹å¼ä¼ éå½æ°çåæ°ãèæäºAPIå½æ°è¦æ±å¿ é¡»éç¨ä¼ å¼æ¹å¼æ¥ä¼ éå½æ°åæ°ï¼è¿ä¸¤ç§åæ°ä¼ éæ¹å¼æ¯ä¸åçï¼åè ä¼ éçæ¯ä¸ä¸ªæéï¼èåè è¦æ±æ¯åæ°çå®çå¼ï¼ãè¿æ ·å°±ä¼åçé误ï¼è§£å³çåæ³æ¯å¨APIå½æ°åæ°å£°æçåé¢å ä¸ByValå ³é®åï¼è¿æ ·VBå°±éç¨ä¼ å¼æ¹å¼ä¼ éåæ°äºã
ï¼4ï¼ææ ·å¾å°å®æ´çAPIå½æ°å£°æ
VBèªå¸¦äºAPIææ¬æ¥çå¨API TEXT VIEWERï¼æ们å¯ä»¥å¨å ¶ä¸æ¾å°APIå½æ°çå®æ´å£°æï¼ç¶åæå®ç²è´´å°ç¨åºä¸å³å¯ã
å¦ä¸æ示ï¼
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
1、在进行Windows系统的编程过程中,如果想要改变标题栏的背景颜色,使其不随系统主题变化,一般来说有两个方法:自己设计标题栏和调用系统API进行处理。
2、要自己设计标题栏,可以设置窗口的边界属性(FormBorderStyle)为None,即不显示边界,此种情况下,窗体默认的标题栏就不会显示。
3、若要调用系统API函数来处理,就需要引入相关API。
4、引入API方法:Declare Function SetSysColors Lib "user32" Alias "SetSysColors" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long 定义标题栏系统常量:Public Const COLOR_ACTIVECAPTION = 2。
5、在引入API相关函数及定义了要求的系统常量后,直接调用函数即可设置标题栏的背景色,如设置标题栏背景色为红色。
本回答被网友采纳