📄 okanswer.c
字号:
#include <stdio.h>
#include <string.h>
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include "call_time.h"
#include "../telbook/telbook.h"
#include "../mybuttonreg.h"
#define IDC_OABUTTON_SAVE 0x1031
#define IDC_OABUTTON_DELETE 0x1032
#define IDC_OABUTTON_CANCEL 0x1033
#define IDC_OABUTTON_RETURN 0x1034
#define IDC_OALISTBOX 0x1035
static BITMAP bmp_bkgnd;
static BITMAP delall_pushed;
static BITMAP delall_unpushed;
static BITMAP delall_mousemove;
static BITMAP return_pushed;
static BITMAP return_unpushed;
static BITMAP return_mousemove;
static BITMAP save_pushed;
static BITMAP save_unpushed;
static BITMAP save_mousemove;
static BITMAP delete_pushed;
static BITMAP delete_unpushed;
static BITMAP delete_mousemove;
static HWND hCtrl1;
static HWND hCtrl2;
static HWND hCtrl3;
static HWND hCtrl4;
static HWND hOAWnd;
static void notify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{
int i;
int index = 0;
char buf[50];
FILE *OAfp;
if ( hwnd == hCtrl1 && nc == MYBUTTON_PUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&save_pushed);
}
if(hwnd == hCtrl2 && nc == MYBUTTON_PUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&delete_pushed);
}
if ( hwnd == hCtrl3 && nc == MYBUTTON_PUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&delall_pushed);
}
if(hwnd == hCtrl4 && nc == MYBUTTON_PUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&return_pushed);
}
if ( hwnd == hCtrl1 && nc == MYBUTTON_UNPUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&save_unpushed);
index = SendMessage (GetDlgItem(hOAWnd, IDC_OALISTBOX), LB_GETCURSEL, 0, 0);
strcpy(tem_num,CIOA[index].tel_number);
addItem(hOAWnd);
}
if(hwnd == hCtrl2 && nc == MYBUTTON_UNPUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&delete_unpushed);
index = SendMessage (GetDlgItem(hOAWnd, IDC_OALISTBOX), LB_GETCURSEL, 0, 0);
SendMessage (GetDlgItem(hOAWnd, IDC_OALISTBOX), LB_DELETESTRING, index, 0);
for(i=index; i<callinfo_len; i++)
{
CIOA[i] = CIOA[i+1];
}
callinfo_len -= 1;
if(callinfo_len == 0)
{
OAfp = fopen("data/okanswer.txt", "w");
fclose(OAfp);
}
else
{
OAfp = fopen("data/okanswer.txt", "w");
fwrite(CIOA, sizeof(_CALLINFO), callinfo_len, OAfp);
fclose(OAfp);
}
}
if ( hwnd == hCtrl3 && nc == MYBUTTON_UNPUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&delall_unpushed);
SendMessage (GetDlgItem(hOAWnd, IDC_OALISTBOX), LB_RESETCONTENT, 0, 0);
callinfo_len = 0;
OAfp = fopen("data/okanswer.txt", "w");
fclose(OAfp);
}
if(hwnd == hCtrl4 && nc == MYBUTTON_UNPUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&return_unpushed);
SendNotifyMessage(hOAWnd,MSG_CLOSE,0,0);
}
if( hwnd == hCtrl1 && nc == MYBUTTON_MOUSEMOVE)
{
//SetWindowAdditionalData(hwnd, (DWORD)&save_mousemove);
}
if(hwnd == hCtrl2 && nc == MYBUTTON_MOUSEMOVE)
{
//SetWindowAdditionalData(hwnd, (DWORD)&delete_mousemove);
}
if( hwnd == hCtrl3 && nc == MYBUTTON_MOUSEMOVE)
{
// SetWindowAdditionalData(hwnd, (DWORD)&delall_mousemove);
}
if(hwnd == hCtrl4 && nc == MYBUTTON_MOUSEMOVE)
{
//SetWindowAdditionalData(hwnd, (DWORD)&return_mousemove);
}
InvalidateRect (hwnd, NULL, TRUE);
}
static int OkAnswerProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
int i;
int index = 0;
char buf[50];
FILE *OAfp;
switch (message)
{
case MSG_CREATE:
/*LoadBitmap (HDC_SCREEN, &save_pushed, "image/button/06.jpg");
LoadBitmap (HDC_SCREEN, &save_unpushed, "image/button/08.jpg");
LoadBitmap (HDC_SCREEN, &save_mousemove, "image/button/09.jpg");
LoadBitmap (HDC_SCREEN, &return_pushed, "image/button/15.jpg");
LoadBitmap (HDC_SCREEN, &return_unpushed, "image/button/13.jpg");
LoadBitmap (HDC_SCREEN, &return_mousemove, "image/button/14.jpg");
LoadBitmap (HDC_SCREEN, &delete_pushed, "image/button/16.jpg");
LoadBitmap (HDC_SCREEN, &delete_unpushed, "image/button/17.jpg");
LoadBitmap (HDC_SCREEN, &delete_mousemove, "image/button/18.jpg");
LoadBitmap (HDC_SCREEN, &delall_pushed, "image/button/12.jpg");
LoadBitmap (HDC_SCREEN, &delall_unpushed, "image/button/10.jpg");
LoadBitmap (HDC_SCREEN, &delall_mousemove, "image/button/11.jpg");
*/
hCtrl1 =CreateWindow ("button",
"存储",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDC_OABUTTON_SAVE,
245, 30, 60, 30,
hWnd, 0);
hCtrl2 =CreateWindow ("button",
"删除",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDC_OABUTTON_DELETE,
245, 66, 60, 30,
hWnd, 0);
hCtrl3 =CreateWindow ("button",
"清空",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDC_OABUTTON_CANCEL,
245, 104, 60, 30,
hWnd, 0);
hCtrl4 =CreateWindow ("button",
"返回",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDC_OABUTTON_RETURN,
245, 140, 60, 30,
hWnd, 0);
/* hCtrl1 = CreateWindowEx(CTRL_MYBUTTON,
"存储",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
WS_EX_TRANSPARENT,
IDC_OABUTTON_SAVE,
245, 30, 60, 30,
hWnd,
(DWORD)&save_unpushed);
hCtrl2 = CreateWindowEx(CTRL_MYBUTTON,
"删除",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
WS_EX_TRANSPARENT,
IDC_OABUTTON_DELETE,
245, 66, 60, 30,
hWnd,
(DWORD)&delete_unpushed);
hCtrl3 = CreateWindowEx(CTRL_MYBUTTON,
"清空",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
WS_EX_TRANSPARENT,
IDC_OABUTTON_CANCEL,
245, 104, 60, 30,
hWnd,
(DWORD)&delall_unpushed);
hCtrl4 = CreateWindowEx(CTRL_MYBUTTON,
"返回",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
WS_EX_TRANSPARENT,
IDC_OABUTTON_RETURN,
245, 140, 60, 30,
hWnd,
(DWORD)&return_unpushed);*/
CreateWindowEx (CTRL_LISTBOX,
"",
WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | WS_VSCROLL,
WS_EX_TRANSPARENT,
IDC_OALISTBOX,
10, 20, 225, 160,
hWnd,
0);
/* SetNotificationCallback (hCtrl1, notify_proc);
SetNotificationCallback (hCtrl2, notify_proc);
SetNotificationCallback (hCtrl3, notify_proc);
SetNotificationCallback (hCtrl4, notify_proc);
*/
OAfp = fopen("data/okanswer.txt", "r");
rewind(OAfp);
while(!feof(OAfp))
{
if(fread(&CIOA[index], sizeof(_CALLINFO), 1, OAfp))
{
sprintf(buf, "%s %s", CIOA[index].tel_number, CIOA[index].tel_time);
SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_ADDSTRING, index, (LPARAM)buf);
index++;
}
}
callinfo_len = index;
fclose(OAfp);
break;
case MSG_MOUSEMOVE:
SetWindowAdditionalData(hCtrl1, (DWORD)&save_unpushed);
SetWindowAdditionalData(hCtrl2, (DWORD)&delete_unpushed);
SetWindowAdditionalData(hCtrl3, (DWORD)&delall_unpushed);
SetWindowAdditionalData(hCtrl4, (DWORD)&return_unpushed);
InvalidateRect (hCtrl1, NULL, TRUE);
InvalidateRect (hCtrl2, NULL, TRUE);
InvalidateRect (hCtrl3, NULL, TRUE);
InvalidateRect (hCtrl4, NULL, TRUE);
break;
case MSG_COMMAND:
switch(wParam)
{
case IDC_OABUTTON_SAVE:
index = SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_GETCURSEL, 0, 0);
strcpy(tem_num,CIOA[index].tel_number);
addItem(hWnd);
break;
case IDC_OABUTTON_DELETE:
index = SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_GETCURSEL, 0, 0);
SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_DELETESTRING, index, 0);
for(i=index; i<callinfo_len; i++)
{
CIOA[i] = CIOA[i+1];
}
callinfo_len -= 1;
if(callinfo_len == 0)
{
OAfp = fopen("data/okanswer.txt", "w");
fclose(OAfp);
}
else
{
OAfp = fopen("data/okanswer.txt", "w");
fwrite(CIOA, sizeof(_CALLINFO), callinfo_len, OAfp);
fclose(OAfp);
}
break;
case IDC_OABUTTON_CANCEL:
SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_RESETCONTENT, 0, 0);
callinfo_len = 0;
OAfp = fopen("data/okanswer.txt", "w");
fclose(OAfp);
break;
case IDC_OABUTTON_RETURN:
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
break;
}
return 0;
case MSG_ERASEBKGND:
{
HDC hdc = (HDC)wParam;
const RECT* clip = (const RECT*) lParam;
BOOL fGetDC = FALSE;
RECT rcTemp;
if (hdc == 0) {
hdc = GetClientDC (hWnd);
fGetDC = TRUE;
}
if (clip) {
rcTemp = *clip;
ScreenToClient (hWnd, &rcTemp.left, &rcTemp.top);
ScreenToClient (hWnd, &rcTemp.right, &rcTemp.bottom);
IncludeClipRect (hdc, &rcTemp);
}
FillBoxWithBitmap (hdc, 0, 0, 320, 206, &bmp_bkgnd);
if (fGetDC)
ReleaseDC (hdc);
return 0;
}
case MSG_CLOSE:
/* UnloadBitmap (&bmp_bkgnd);
UnloadBitmap (&return_pushed);
UnloadBitmap (&return_unpushed);
UnloadBitmap (&return_mousemove);
UnloadBitmap (&save_pushed);
UnloadBitmap (&save_unpushed);
UnloadBitmap (&save_mousemove);
UnloadBitmap (&delete_pushed);
UnloadBitmap (&delete_unpushed);
UnloadBitmap (&delete_mousemove);
UnloadBitmap (&delall_pushed);
UnloadBitmap (&delall_unpushed);
UnloadBitmap (&delall_mousemove);*/
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}
int OkAnswerDialog(HWND hWnd)
{
MSG Msg;
// HWND hOAWnd;
MAINWINCREATE CreateInfo;
CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
CreateInfo.dwExStyle = WS_EX_NONE;
CreateInfo.spCaption = "已接来电";
CreateInfo.hMenu = 0;
CreateInfo.hCursor = GetSystemCursor(0);
CreateInfo.hIcon = 0;
CreateInfo.MainWindowProc = OkAnswerProc;
CreateInfo.lx = 0;
CreateInfo.ty = 0;
CreateInfo.rx = 320;
CreateInfo.by = 215;
CreateInfo.iBkColor = GetWindowElementColor (BKC_CONTROL_DEF);
CreateInfo.dwAddData = 0;
CreateInfo.hHosting = hWnd;
if (LoadBitmap (HDC_SCREEN, &bmp_bkgnd, "image/background/bkgnd29.jpg"))
return -1;
RegisterMyButtonControl ();
hOAWnd = CreateMainWindow (&CreateInfo);
if (hOAWnd == HWND_INVALID)
return -1;
ShowWindow(hOAWnd, SW_SHOWNORMAL);
while (GetMessage(&Msg, hOAWnd)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
UnregisterMyButtonControl ();
MainWindowThreadCleanup (hOAWnd);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -