算是学习windows编程后的第一个作品吧,想想还是把写过的东西留些在网上吧,算是另一种硬盘,电脑硬盘不靠谱(虽然从装机2年操作系统都没重装过一次...)
基本界面实现
#include <windows.h>
#include "core.h" //计算器功能核心,表达树实现表达式计算,支持浮点数
#include "resource.h"
BOOL CALLBACK DialogProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
char source [MAX_SIZE];
char dest [40];
double cal_result;
HINSTANCE hInst;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
hInst = hInstance;
DialogBoxParam (hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DialogProc, 0);
return 1;
}
BOOL CALLBACK DialogProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND hInput = GetDlgItem (hDlg, IDC_INPUT);
HWND hOut = GetDlgItem (hDlg, IDC_OUT);
static HBITMAP hBitmap;
BITMAP bitmap;
HDC hdc, hdcMem ;
PAINTSTRUCT ps ;
switch (message)
{
case WM_INITDIALOG:printf("a");
SetWindowTextA (GetDlgItem (hDlg, IDC_INPUT), "0");
hBitmap = LoadBitmap(hInst, L"BitBlt");
//GetObject (hBitmap, sizeof (bitmap), &bitmap);
return true;
case WM_PAINT:
hdc = BeginPaint(hDlg, &ps);
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBitmap);
StretchBlt (hdc, 0, 0, 550, 420,
hdcMem, 0, 0, 550, 380, MERGECOPY) ;
DeleteDC(hdcMem);
EndPaint (hDlg, &ps);
return true;
case WM_COMMAND:
switch (LOWORD (wParam))
{
case IDM_HELP_ABOUT:
if (DialogBox (hInst, TEXT ("AboutBox"), hDlg, AboutDlgProc))
InvalidateRect (hDlg, NULL, TRUE) ;
return 0 ;
case IDC_0:
strcat (source, "0");
SetWindowTextA (hInput, source);
break;
case IDC_1:
strcat (source, "1");
SetWindowTextA (hInput, source);
break;
case IDC_2:
strcat (source, "2");
SetWindowTextA (hInput, source);
break;
case IDC_3:
strcat (source, "