📄 conv_icon.cpp
字号:
// conv_icon.cpp
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "msc.h"
#include "res.h"
#include "resource.h"
#include "conv_icon.h"
////////////////////////////////////////
// 儊僀儞僟僀傾儘僌偺忬嫷昞帵 //
////////////////////////////////////////
static int StatusIconArray [ SRC_DST_FILE_NELEM ] ;
// 忬嫷昞帵偺忬懺傪愝掕
int SetStatusIcon ( HWND hWnd, int nIndex, int nStatus ) {
int nPrevStatus = StatusIconArray [ nIndex ] ;
StatusIconArray [ nIndex ] = nStatus ;
if ( nPrevStatus != nStatus ) {
HWND hCtrl = GetDlgItem ( hWnd, IDC_STATIC_STATUS_MIN + nIndex ) ;
InvalidateRect ( hCtrl, NULL, 0 ) ;
UpdateWindow ( hCtrl ) ;
return 1 ;
}
return 0 ;
}
// 忬嫷昞帵傪昤夋
int DrawStatusIcon ( HWND hWnd, DRAWITEMSTRUCT *pDrawItem, int nIndex ) {
RECT Rect = pDrawItem->rcItem ; // 傾僀僥儉偺僒僀僘
HDC hDC = pDrawItem->hDC ; // 僨僶僀僗僐儞僥僉僗僩
// 攚宨傪昤夋
HBRUSH hBrush = CreateSolidBrush ( GetBkColor ( hDC ) ) ;
FillRect ( hDC, & Rect, hBrush ) ;
DeleteObject ( hBrush ) ;
// 傾僀僐儞偺僒僀僘
int nSize = __min ( Rect.right - Rect.left, Rect.bottom - Rect.top ) ;
// 傾僀僐儞傪慖戰
int nIconId ;
switch ( StatusIconArray [ nIndex ] ) {
case STATUS_ICON_READY : nIconId = IDI_ICON_STATUS_READY ; break ;
case STATUS_ICON_NOW : nIconId = IDI_ICON_STATUS_NOW ; break ;
case STATUS_ICON_SUCCESS : nIconId = IDI_ICON_STATUS_SUCCESS ; break ;
case STATUS_ICON_FAILURE : nIconId = IDI_ICON_STATUS_FAILURE ; break ;
default : nIconId = IDI_ICON_STATUS_READY ; break ; // dummy
}
// 傾僀僐儞傪儘乕僪
HICON hIcon = (HICON) LoadImageEx ( nIconId, IMAGE_ICON, nSize, nSize, 0 ) ;
if ( ! hIcon ) hIcon = (HICON) LoadImageEx ( nIconId, IMAGE_ICON, 32, 32, 0 ) ;
if ( ! hIcon ) hIcon = (HICON) LoadImageEx ( nIconId, IMAGE_ICON, 0, 0, 0 ) ;
// 傾僀僐儞傪昤夋
if ( hIcon ) {
int nLeft = Rect.left + ( ( Rect.right - Rect.left ) - nSize ) / 2 ;
int nTop = Rect.top + ( ( Rect.bottom - Rect.top ) - nSize ) / 2 ;
DrawIconEx ( hDC, nLeft, nTop, hIcon, nSize, nSize, 0, NULL, DI_NORMAL ) ;
DestroyIcon ( hIcon ) ;
}
return 0 ;
}
////////////////////////////////////////
// 僨僶僢僌 //
////////////////////////////////////////
// 儊僀儞僟僀傾儘僌偺傾僀僥儉偺惍崌惈傪僠僃僢僋
int IsDlgItemIdConformable ( void ) {
if ( ( IDC_BUTTON_SRC_MIN - IDC_EDIT_SRC_MIN ) != SRC_DST_FILE_NELEM ) return 0 ;
if ( ( IDC_STATIC_STATUS_MIN - IDC_BUTTON_SRC_MIN ) != SRC_DST_FILE_NELEM ) return 0 ;
if ( ( IDC_EDIT_DST_MIN - IDC_STATIC_STATUS_MIN ) != SRC_DST_FILE_NELEM ) return 0 ;
if ( ( IDC_BUTTON_DST_MIN - IDC_EDIT_DST_MIN ) != SRC_DST_FILE_NELEM ) return 0 ;
return 1 ;
}
// 僐儞僩儘乕儖偺僒僀僘傪昞帵
int DisplayControlSize ( HWND hWnd, int nId ) {
RECT Rect ;
GetWindowRect ( GetDlgItem ( hWnd, nId ), & Rect ) ;
char buffer [ 0x100 ] ;
int x = Rect.right - Rect.left ;
int y = Rect.bottom - Rect.top ;
sprintf ( buffer, "(ID:%d) x:%d, y:%d\n", nId, x, y ) ;
MessageBoxA ( hWnd, buffer, "", MB_OK ) ;
return 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -