#include <windows.h>
#include <tchar.h>
LRESULT CALLBACK WinMessageProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam);
int WINAPI _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nShowCmd)
{
//First:Register a window
WNDCLASSEX mwin;
mwin.cbSize = sizeof(WNDCLASSEX);
mwin.style = CS_VREDRAW | CS_HREDRAW;
mwin.cbClsExtra = 0;
mwin.cbWndExtra = 0;
mwin.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
mwin.hCursor = LoadCursor(NULL,IDC_ARROW);
mwin.hIcon = LoadIcon(NULL,NULL);
mwin.hIconSm = LoadIcon(NULL,NULL);
mwin.hInstance = hInstance;
mwin.lpfnWndProc = WinMessageProc;
mwin.lpszMenuName = NULL;
mwin.lpszClassName = _T("DesktopCounter");
if(!RegisterClassEx(&mwin))
{
MessageBox(NULL,_T("Error"),_T("Register error."),MB_OK);
return 0;
}
//Second:Create this window
HWND NewWindow = CreateWindowEx(0L,_T("DesktopCounter"),_T("DesktopCounter"),WS_OVERLAPPEDWINDOW,0,0,200,300,NULL,NULL,hInstance,NULL);
if(NewWindow == NULL)
{
MessageBox(NULL,_T("Error"),_T("Create error."),MB_OK);
return 0;
}
ShowWindow(NewWindow,nShowCmd);
UpdateWindow(NewWindow);
//Third:Message
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
LRESULT CALLBACK WinMessageProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY://exit
{
PostQuitMessage(0);
break;
}
case WM_CREATE://begin
{
//0,1,2,3,4,5,6,7,8,9,.,c,+,-,*,/,and a line above these
const int ButtonWidth = 50;
const int ButtonHeight = 50;//square buttons
RECT RC;
GetClientRect(hwnd,&RC);
HINSTANCE hInst = (HINSTANCE)GetWindowLongPtr(hwnd,GWLP_HINSTANCE);
HWND NumButton1 = CreateWindowEx(0L,_T("Num1"),_T("1"),WS_VISIBLE|WS_CHILD,0,100,ButtonWidth,ButtonHeight,hwnd,(HMENU)1,hInst,NULL);
HWND NumButton2 = CreateWindowEx(0L,_T("Num2"),_T("2"),WS_VISIBLE|WS_CHILD,50,100,ButtonWidth,ButtonHeight,hwnd,(HMENU)2,hInst,NULL);
HWND NumButton3 = CreateWindowEx(0L,_T("Num3"),_T("3"),WS_VISIBLE|WS_CHILD,100,100,ButtonWidth,ButtonHeight,hwnd,(HMENU)3,hInst,NULL);
HWND NumButton4 = CreateWindowEx(0L,_T("Num4"),_T("4"),WS_VISIBLE|WS_CHILD,0,150,ButtonWidth,ButtonHeight,hwnd,(HMENU)4,hInst,NULL);
HWND NumButton5 = CreateWindowEx(0L,_T("Num5"),_T("5"),WS_VISIBLE|WS_CHILD,50,150,ButtonWidth,ButtonHeight,hwnd,(HMENU)5,hInst,NULL);
HWND NumButton6 = CreateWindowEx(0L,_T("Num6"),_T("6"),WS_VISIBLE|WS_CHILD,100,150,ButtonWidth,ButtonHeight,hwnd,(HMENU)6,hInst,NULL);
HWND NumButton7 = CreateWindowEx(0L,_T("Num7"),_T("7"),WS_VISIBLE|WS_CHILD,0,200,ButtonWidth,ButtonHeight,hwnd,(HMENU)7,hInst,NULL);
HWND NumButton8 = CreateWindowEx(0L,_T("Num8"),_T("8"),WS_VISIBLE|WS_CHILD,50,200,ButtonWidth,ButtonHeight,hwnd,(HMENU)8,hInst,NULL);
HWND NumButton9 = CreateWindowEx(0L,_T("Num9"),_T("9"),WS_VISIBLE|WS_CHILD,100,200,ButtonWidth,ButtonHeight,hwnd,(HMENU)9,hInst,NULL);
HWND NumButton0 = CreateWindowEx(0L,_T("Num0"),_T("0"),WS_VISIBLE|WS_CHILD,50,250,ButtonWidth,ButtonHeight,hwnd,(HMENU)0,hInst,NULL);
HWND NumButtonPoint = CreateWindowEx(0L,_T("Point"),_T("."),WS_VISIBLE|WS_CHILD,100,250,ButtonWidth,ButtonHeight,hwnd,(HMENU)10,hInst,NULL);
HWND ChButtonPlus = CreateWindowEx(0L,_T("Ch_Plus"),_T("+"),WS_VISIBLE|WS_CHILD,150,150,ButtonWidth,ButtonHeight,hwnd,(HMENU)11,hInst,NULL);
HWND ChButtonMinus = CreateWindowEx(0L,_T("Ch_Minus"),_T("-"),WS_VISIBLE|WS_CHILD,150,200,ButtonWidth,ButtonHeight,hwnd,(HMENU)12,hInst,NULL);
HWND ChButtonMulti = CreateWindowEx(0L,_T("Ch_Multi"),_T("*"),WS_VISIBLE|WS_CHILD,150,100,ButtonWidth,ButtonHeight,hwnd,(HMENU)13,hInst,NULL);
HWND ChButtonDivis = CreateWindowEx(0L,_T("Ch_Divis"),_T("/"),WS_VISIBLE|WS_CHILD,150,50,ButtonWidth,ButtonHeight,hwnd,(HMENU)14,hInst,NULL);
HWND ChButtonEqual = CreateWindowEx(0L,_T("Ch_Equal"),_T("="),WS_VISIBLE|WS_CHILD,150,250,ButtonWidth,ButtonHeight,hwnd,(HMENU)15,hInst,NULL);
HWND ChButtonPlomi/*Plus or Minus*/ = CreateWindowEx(0L,_T("Ch_Pl or Mi"),_T("+/-"),WS_VISIBLE|WS_CHILD,0,250,ButtonWidth,ButtonHeight,hwnd,(HMENU)16,hInst,NULL);
HWND FucButtonClear = CreateWindowEx(0L,_T("Clear"),_T("C"),WS_VISIBLE|WS_CHILD,50,50,ButtonWidth,ButtonHeight,hwnd,(HMENU)20,hInst,NULL);
HWND FucButtonBack = CreateWindowEx(0L,_T("Back"),_T("<-"),WS_VISIBLE|WS_CHILD,100,50,ButtonWidth,ButtonHeight,hwnd,(HMENU)21,hInst,NULL);
break;
}
default:return DefWindowProc(hwnd,msg,wParam,lParam);
}
return 0;
}
练习用windows api做一个简单的计算器,还没做完想看效果,但是发现按钮一个都没有显示出来
测试之后发现按钮其实被创建了,但是没有显示(随便挑了一个按钮,发现不是NULL)
操作系统是Windows 10,开发工具用的是Dev-cpp,是c89标准
如果有更好的方案也请帮改进
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。