|
楼主 |
发表于 2007-4-24 01:09:50
|
显示全部楼层
谢谢 DoDo 和 dave3068
根据你们的建议,我修改了一下,现在可以完成想要实现的功能了
代码我发在下面
但是这里依然存在几个问题
1、 dave3068 说的 :
** 在 WinPro 中CREATE的时候直接把 hWnd 保存到全局变量 h_MainWnd。**
对你的这句话按照我的理解,我做的修改是代码中 加粗 的部分,不知道是否是你的本来的意思?如果不是,希望你提供一下你的意思的代码表示,
我对你所说的“保存”还有点不明确,谢谢。
2、DoDo 的意思是 SetTimer(GetMainWindowHandle(hWnd), IDTIMER, 20);
我试试了很多方法,包括 SetTimer(GetParent(hDlg), IDTIMER, 20);
还是不能成功,希望大家再帮帮忙,一起探讨一下问题的所在。
谢谢你们二位了!!!
- #include <stdio.h>
- #include <minigui/common.h>
- #include <minigui/minigui.h>
- #include <minigui/gdi.h>
- #include <minigui/window.h>
- #include <minigui/control.h>
- #define IDTIMER 0
- #define IDC_DISP1 1000
- #define ID_OK 1001
- #define ID_CANCEL 1002
- #define ID_RECEIVE1 1003
- #define ID_RECEIVE2 1004
- [b]HWND hWnd1;[/b]
- static DLGTEMPLATE MyDlg =
- { WS_VISIBLE | WS_BORDER,
- WS_EX_NONE,
- 512, 0, 128 ,480,
- "",
- 0, 0,
- 3,
- NULL,
- 0
- };
- static CTRLDATA CtrlInitData [] =
- {
-
- { "button",
- WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON,
- 20, 50, 80,25,
- ID_OK,
- "开始扫描",
- 0,
- WS_EX_NONE,
- },
- { "button",
- WS_VISIBLE | WS_TABSTOP,
- 20, 100, 80 ,25,
- ID_CANCEL,
- "停止扫描",
- 0,
- WS_EX_NONE,
- },
- { "static",
- WS_VISIBLE | SS_SIMPLE,
- 10, 300, 110 ,16,
- IDC_DISP1,
- "欢迎使用MiniGUI" ,
- 0,
- WS_EX_NONE
- }
- };
- static int MyDlgProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
- {
- // HWND hWnd;
- switch (message)
- {
- case MSG_INITDIALOG:
- printf("this is a test3\n");
- return 1;
- case MSG_COMMAND:
- switch (wParam)
- {
- case ID_OK:
-
- // PostMessage(hWnd1, ID_RECEIVE1,0L, (LPARAM)ID_OK);******---also good---*********
- PostMessage(hWnd1, ID_RECEIVE1,0L, 0L);
- printf("this is a test6\n");
- break;
-
- case ID_CANCEL:
- PostMessage(hWnd1, ID_RECEIVE2,0L, 0L);
- // KillTimer(hDlg, IDTIMER);
- break;
-
- default:
- break;
- }
- break;
-
- default:
- return DefaultDialogProc(hDlg, message, wParam, lParam);
- }
- return 0;
- }
- static void InitDialogBox(HWND hWnd)
- { MyDlg.controls = CtrlInitData;
- DialogBoxIndirectParam(&MyDlg, hWnd, MyDlgProc, 0L);
- }
- static int WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
- {
- HDC hdc;
- [b] hWnd1 = hWnd;[/b]
- static BITMAP s_bmp;
- static char bmpno[] = "00.jpg";
- RECT rc = {0,0,512,480};
- switch (message) {
- case MSG_CREATE:
- LoadBitmapFromFile(HDC_SCREEN, &s_bmp, bmpno);
- hdc = BeginPaint (hWnd);
- FillBoxWithBitmap (hdc, 0, 0, 512, 480, &s_bmp);
- EndPaint(hWnd, hdc);
- printf("this is a test1\n");
- InitDialogBox(hWnd);
- return 0;
- case ID_RECEIVE1:
- SetTimer(hWnd, IDTIMER, 20);
- printf("this is a test7\n");
- return 0;
-
- case ID_RECEIVE2:
- KillTimer(hWnd, IDTIMER);
- break;
- case MSG_TIMER:
- printf("this is a test4\n");
- if(LOWORD(wParam) == IDTIMER)
- InvalidateRect (hWnd, &rc, TRUE);
- break;
- case MSG_ERASEBKGND:
- printf("this is a test2\n");
- if(bmpno[1] == '9')
- { bmpno[0] = bmpno[0]+1;
- bmpno[1] = '0';
- }
- else
- {bmpno[1] = bmpno[1]+1;}
- LoadBitmapFromFile(HDC_SCREEN, &s_bmp, bmpno);
- hdc = BeginPaint (hWnd);
- FillBoxWithBitmap (hdc, 0, 0, 512, 480, &s_bmp);
- EndPaint(hWnd, hdc);
-
- if(bmpno[0] == '3' && bmpno[1] == '1')
- {
- bmpno[0] = '0';
- bmpno[1] = '0';
- }
-
- return 0;
- default:
- return DefaultMainWinProc(hWnd, message, wParam, lParam);
- }
- return 0;
- }
- int MiniGUIMain (int argc, const char* argv[])
- {
- MSG Msg;
- HWND hMainWnd;
- MAINWINCREATE CreateInfo;
- #ifdef _LITE_VERSION
- SetDesktopRect(0, 0, 800, 600);
- #endif
-
- CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER;
- CreateInfo.dwExStyle = WS_EX_NONE;
- CreateInfo.spCaption = "";
- CreateInfo.hMenu = 0;
- CreateInfo.hCursor = GetSystemCursor(0);
- CreateInfo.hIcon = 0;
- CreateInfo.MainWindowProc = WinProc;
- CreateInfo.lx = 0;
- CreateInfo.ty = 0;
- CreateInfo.rx = 640;
- CreateInfo.by = 480;
- CreateInfo.iBkColor = PIXEL_lightwhite;
- CreateInfo.dwAddData = 0;
- CreateInfo.hHosting = HWND_DESKTOP;
-
- hMainWnd = CreateMainWindow (&CreateInfo);
-
- if (hMainWnd == HWND_INVALID)
- return -1;
- ShowWindow(hMainWnd, SW_SHOWNORMAL);
- while (GetMessage(&Msg, hMainWnd)) {
- TranslateMessage(&Msg);
-
- DispatchMessage(&Msg);
- }
- MainWindowThreadCleanup (hMainWnd);
- return 0;
- }
- #ifndef _LITE_VERSION
- #include <minigui/dti.c>
- #endif
复制代码 |
|