惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - Casm

C#代码与javaScript函数的相互调用 窗口A打开窗口B,关闭窗口B,窗口B关闭窗口A(web窗口互关问题) - Casm - 博客园 3G网络 无聊~写个计算器...待续 一个记事本的例子(作者kiki) 关闭用户打开的进程处理 如何在Vista IIS 7 中用 vs2005 调试 Web 项目 回顾windows界面的20年历程(三)(转) 回顾windows界面的20年历程(二)(转) 回顾windows界面的20年历程(一)(转) google的历史 一个新手的成长过程 传奇3封包加解密C#版 传奇3加密解密-VB2005 VB 热血江湖V170外挂 全部 源码 给学做嵌入式开发外挂技术的新人一点建议 网络游戏外挂编写基础(1) 到处都有,但是自己还是要常常看看! 使用vs2005调试javascript
下拉框的郁闷!
Casm · 2007-08-06 · via 博客园 - Casm

郁闷了半天,为什么下拉框不能下拉,原来是下拉框高度不够,这问题都会忘记...无语了!

.386
.model flat, stdcall  ;32 bit memory model
option casemap :none  ;case sensitive

include CommonControls.inc

.code

;########################################################################

DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
 local @szBuffer[128] : byte

 mov eax, uMsg
 .if eax == WM_INITDIALOG ;初始化标题栏图标
  
  invoke LoadIcon, hInstance, ICO_MAIN
  invoke SendMessage, hWnd, WM_SETICON, ICON_BIG, eax
  
  ;初始化组合框
  invoke SendDlgItemMessage, hWnd, IDC_TITLETEXT, CB_ADDSTRING, 0, addr szText1
  invoke SendDlgItemMessage, hWnd, IDC_TITLETEXT, CB_ADDSTRING, 0, addr szText2
  invoke SendDlgItemMessage, hWnd, IDC_TITLETEXT, CB_ADDSTRING, 0, addr szText3
  
  invoke SendDlgItemMessage, hWnd, IDC_TITLETEXT, CB_SETCURSEL, 0, 0
  invoke GetDlgItem, hWnd, IDC_CUSTOMTEXT
  invoke EnableWindow, eax, FALSE
  
  invoke LoadBitmap, hInstance, IDB_1
  mov hBmp1, eax
  invoke LoadBitmap, hInstance, IDB_2
  mov hBmp2, eax
  
  invoke CheckDlgButton, hWnd, IDC_SHOWBMP, BST_CHECKED 
  invoke CheckDlgButton, hWnd, IDC_ALOW, BST_CHECKED
  invoke CheckDlgButton, hWnd, IDC_THICKFRAME, BST_CHECKED
  
  invoke SendDlgItemMessage, hWnd, IDC_SCROLL, SBM_SETRANGE, 0, 100
  
 .elseif eax==WM_COMMAND
 
  mov eax, wParam
  .if ax == IDC_BTNCANCEL
   
   invoke EndDialog, hWnd, NULL
   invoke DeleteObject, hBmp1
   invoke DeleteObject, hBmp2
   
  .elseif ax == IDC_BTNOK
  
   mov eax, hBmp1 ;切换图片
   xchg eax, hBmp2
   mov hBmp1, eax
   invoke SendDlgItemMessage, hWnd, IDC_PIC, STM_SETIMAGE, IMAGE_BITMAP, eax
   
  .elseif ax == IDC_ONTOP ;窗口是否置顶
  
   invoke IsDlgButtonChecked, hWnd, IDC_ONTOP
   .if eax == BST_CHECKED
     
    invoke SetWindowPos, hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE
   
   .else
    
    invoke SetWindowPos, hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE
     
   .endif
   
  .elseif ax == IDC_SHOWBMP ;是否显示图片
   
   invoke GetDlgItem, hWnd, IDC_PIC
   mov ebx, eax
   invoke IsWindowVisible, ebx
   .if eax
    
    invoke ShowWindow, ebx, SW_HIDE 
    
   .else
   
    invoke ShowWindow, ebx, SW_SHOW
    
   .endif 
   
  .elseif ax == IDC_ALOW ;允许更换图片按钮
  
   invoke IsDlgButtonChecked, hWnd, IDC_ALOW
   .if eax == BST_CHECKED
    
    mov ebx, TRUE
   
   .else
    
    xor ebx, ebx
    
   .endif
   invoke GetDlgItem, hWnd, IDC_BTNOK
   invoke EnableWindow, eax, ebx
   
  .elseif ax == IDC_MODALFRAME
   
   invoke GetWindowLong, hWnd, GWL_STYLE
   and eax, not WS_THICKFRAME
   invoke SetWindowLong, hWnd, GWL_STYLE, eax
   
  .elseif ax == IDC_THICKFRAME
  
   invoke GetWindowLong, hWnd, GWL_STYLE
   or eax, WS_THICKFRAME
   invoke SetWindowLong, hWnd, GWL_STYLE, eax
   
  .elseif ax == IDC_TITLETEXT
   
   shr eax, 16
   .if ax == CBN_SELENDOK
   
    invoke SendDlgItemMessage, hWnd, IDC_TITLETEXT, CB_GETCURSEL, 0, 0
    .if eax == 2
     
     invoke GetDlgItem, hWnd, IDC_CUSTOMTEXT
     invoke EnableWindow, eax, TRUE
     
    .else
     
     mov ebx, eax
     invoke SendDlgItemMessage, hWnd, IDC_TITLETEXT, CB_GETLBTEXT, ebx, addr @szBuffer
     invoke SetWindowText, hWnd, addr @szBuffer
     invoke GetDlgItem, hWnd, IDC_CUSTOMTEXT
     invoke EnableWindow, eax, FALSE
     
    .endif
   .endif
   
  .elseif ax == IDC_CUSTOMTEXT
   
   invoke GetDlgItemText, hWnd, IDC_CUSTOMTEXT, addr @szBuffer, sizeof @szBuffer
   invoke SetWindowText, hWnd, addr @szBuffer
   
  .endif
  
 .elseif eax == WM_HSCROLL
  
  mov eax, wParam
  .if ax == SB_LINELEFT
  
   dec dwPos
   
  .elseif ax == SB_LINERIGHT
  
   inc dwPos
   
  .elseif ax == SB_PAGELEFT
    
   sub dwPos, 10
   
  .elseif ax == SB_PAGERIGHT
   
   add dwPos,  10
   
  .elseif ax == SB_THUMBPOSITION || ax == SB_THUMBTRACK
   
   mov eax, wParam
   shr eax, 16
   mov dwPos, eax
  
  .else
   
   mov eax, TRUE
   ret
   
  .endif
  
  cmp dwPos, 0
  jge @F
  mov dwPos, 0
  @@:
  cmp dwPos, 100
  jle @F
  mov dwPos, 100
  @@:
  invoke SetDlgItemInt, hWnd, IDC_VALUE, dwPos, FALSE
  invoke SendDlgItemMessage, hWnd, IDC_SCROLL, SBM_SETPOS, dwPos, TRUE

  
 .elseif eax == WM_CLOSE  ;关闭对话框并销毁图片资源句柄
 
  invoke EndDialog, hWnd, 0
  invoke DeleteObject, hBmp1
  invoke DeleteObject, hBmp2
  
  
 .else
 
  mov eax, FALSE
  ret
  
 .endif
 
  mov eax, TRUE
  ret

DlgProc endp

start:

 invoke GetModuleHandle,NULL
 mov  hInstance,eax

     invoke InitCommonControls
 invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,addr DlgProc,NULL
 invoke ExitProcess,0
 
end start