15,471
社区成员
发帖
与我相关
我的任务
分享
// RBG.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "RBG100.h"
#include "GloryCoTypeDef.h" /动态库的头文件
#include <stdio.h>
#include <fstream>
#include <windows.h>
using namespace std;
#pragma comment (lib, "GloryCoWin.lib") ///动态库的lib文件
#define WM_USER_MESSAGE_FROM_DLL (WM_USER+1002) //自定义消息码
#define DLL_NAME ("DLLTEST1")
//全局变量
GLYHANDLE hGLYHandle;
DWORD dwDLLReturn;
HWND m_hWnd;
//创建了一个子线程,弄来循环处理消息
DWORD _stdcall ThreadProc(LPVOID lpParameter)
{
printf("子线程\n");
MSG msg;
BOOL bRet;
while( (bRet = GetMessage( &msg, m_hWnd, 0, 0 )) != 0)
{
printf("接收消息!\n");
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
//自定义消息的处理函数
void OnMessage(WPARAM wParam,LPARAM lParam);
void main( )
{
HINSTANCE hInstance = (HINSTANCE) GetModuleHandle(0);
//注册窗口类
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="Message";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);
//创建窗口
m_hWnd=CreateWindow("Message","Message",WS_OVERLAPPEDWINDOW,
0,0,600,400,NULL,NULL,hInstance,NULL);
//显示及刷新窗口
ShowWindow(m_hWnd,SW_SHOWNORMAL);
UpdateWindow(m_hWnd);
printf("%d\n",m_hWnd);
HANDLE hThread;
DWORD ThreadID;
//创建线程
hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, &ThreadID);
printf("%d\n", hThread);
printf("%d\n", ThreadID);
//一下三个函数式动态库中的函数,实现设备的初始化
dwDLLReturn = GLY_Open(DLL_NAME, &hGLYHandle);
if (GLY_SUCCESS != dwDLLReturn)
{
return ;
}
dwDLLReturn = GLY_SetMessageCode(hGLYHandle, WM_USER_MESSAGE_FROM_DLL);
if (GLY_SUCCESS != dwDLLReturn)
{
return ;
}
dwDLLReturn = GLY_SetWindowHandle(hGLYHandle, m_hWnd);
if (GLY_SUCCESS != dwDLLReturn)
{
return ;
}
}
//编写窗口过程函数
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_USER_MESSAGE_FROM_DLL:
OnMessage(wParam, lParam) ;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
void OnMessage(WPARAM wParam,LPARAM lParam)
{
if (hGLYHandle == NULL)
return ;
LPGLYPARAM result = (LPGLYPARAM)lParam;
fstream mFile;
mFile.open("message.txt", ios::app);
{
char *p;
GLY_GetStringFromID(hGLYHandle, result->dwMessageID, &p);
static int no = 0;
no++;
string value;
mFile<<no<<" "<<result->Handle<<" "<<result->dwErrorCode<<" " << result->dwMessageID << " " << result->dwRequestID << " ";
if (result->dwMessageID == GLY_COMPLETE_MESSAGE)
{
}
else
{
if (result->lpBuffer == NULL)
mFile<<"NULL"<<endl;
else
{
DWORD *id = (DWORD*)result->lpBuffer;
GLY_GetStringFromID(hGLYHandle, *id, &p);
mFile<<p<<endl;;
}
}
GLY_FreeMemory(result);
}
return ;
}
#include "stdafx.h"
#include "RBG100.h"
#include "GloryCoTypeDef.h" /动态库的头文件
#include <stdio.h>
#include <fstream>
#include <windows.h>
using namespace std;
#pragma comment (lib, "GloryCoWin.lib") ///动态库的lib文件
#define WM_USER_MESSAGE_FROM_DLL (WM_USER+1002) //自定义消息码
#define DLL_NAME ("DLLTEST1")
//全局变量
GLYHANDLE hGLYHandle;
DWORD dwDLLReturn;
HWND m_hWnd;
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
//自定义消息的处理函数
void OnMessage(WPARAM wParam,LPARAM lParam);
void main( )
{
HINSTANCE hInstance = (HINSTANCE) GetModuleHandle(0);
//注册窗口类
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="Message";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);
//创建窗口
m_hWnd=CreateWindow("Message","Message",WS_OVERLAPPEDWINDOW,
0,0,600,400,NULL,NULL,hInstance,NULL);
//显示及刷新窗口
ShowWindow(m_hWnd,SW_SHOWNORMAL);
UpdateWindow(m_hWnd);
printf("%d\n",m_hWnd);
HANDLE hThread;
DWORD ThreadID;
//创建线程
hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, &ThreadID);
printf("%d\n", hThread);
printf("%d\n", ThreadID);
//一下三个函数式动态库中的函数,实现设备的初始化
dwDLLReturn = GLY_Open(DLL_NAME, &hGLYHandle);
if (GLY_SUCCESS != dwDLLReturn)
{
return ;
}
dwDLLReturn = GLY_SetMessageCode(hGLYHandle, WM_USER_MESSAGE_FROM_DLL);
if (GLY_SUCCESS != dwDLLReturn)
{
return ;
}
dwDLLReturn = GLY_SetWindowHandle(hGLYHandle, m_hWnd);
if (GLY_SUCCESS != dwDLLReturn)
{
return ;
}
MSG msg;
BOOL bRet;
while( (bRet = GetMessage( &msg, m_hWnd, 0, 0 )) != 0)
{
printf("接收消息!\n");
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}