C++语法翻译成c#的

xjjrocker 2014-05-26 10:09:55
#define WM_CODE_CHANGE WM_USER+100

UINT uMsg = WM_CODE_CHANGE;

//启动外部程序
Stock_Init(this->m_hWnd,uMsg,"XX系统.EXE");

while(1)
{
HWND hwnd = GetHQExeHWND();

m_pWndExtern = CWnd::FromHandle(hwnd); //重点在这边,c#似乎没有啊

if (m_pWndExtern)
{
if (IsWindow(m_pWndExtern->m_hWnd))
{
this->SetWindowPos(NULL, 0, 0, 800, 600, 0);
this->CenterWindow();

m_pWndExtern->ModifyStyle( WS_CAPTION | WS_THICKFRAME, 0);
m_pWndExtern->SetParent(this);

CRect rect;
GetClientRect(&rect);

CPoint pt = rect.TopLeft();
ClientToScreen(&pt);
ScreenToClient(&pt);

m_pWndExtern->SetWindowPos(NULL, pt.x, pt.y, rect.Width(), rect.Height(), 0);

break;
}

}

Sleep(500);
}


return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}

LRESULT CLaodExeTestDlg::OnCodeChange(WPARAM wp,LPARAM lp)
{
GOOGSINFO* pCodeInfo = (GOOGSINFO*)lp;

if (pCodeInfo == NULL)
{
return 0;
}



CString strInfo;

strInfo.Format("名称:%s,代码:%s",pCodeInfo->m_szCode,pCodeInfo->m_szName);

AfxMessageBox(strInfo);

return 0;
}
...全文
234 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjjrocker 2014-05-27
  • 打赏
  • 举报
回复
另外的疑问是,c++写的嵌入exe的程序在win7下运行的时候不提示安全警告,但是c#编写的嵌入exe的程序打开就收到组策略的影响,提示安全警告,打开文件安全警告对话框,如何解决?!
xjjrocker 2014-05-27
  • 打赏
  • 举报
回复
嵌入问题我自己搞定了,现在的问题是,外面窗体大小变化,被嵌入的窗体如何跟着动呢,试了好几个方法都不行,高人指点下。不然都没法结贴了。
xjjrocker 2014-05-26
  • 打赏
  • 举报
回复
我写了如下
private const uint WM_USER = 0x0400;
private const uint WM_CODE_CHANGE = WM_USER + 100;

[DllImport("RecvDll.dll",EntryPoint="GetHQExeHWND",CharSet=CharSet.Ansi, CallingConvention=CallingConvention.Cdecl)]
private static extern IntPtr GetHQExeHWND();

[DllImport("RecvDll.dll", EntryPoint = "Stock_Quit", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
private static extern int Stock_Quit(IntPtr hWnd);

[DllImport("RecvDll.dll", EntryPoint = "Stock_Init", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
private static extern int Stock_Init(IntPtr hWnd, uint uMsg, string pszExePath);

[DllImport("user32.dll")]
public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern int SetWindowPos(
int hwnd,
int hWndInsertAfter,
int x,
int y,
int cx,
int cy,
int wFlags
);


uint uMsg = WM_USER + 100;
private void button1_Click(object sender, EventArgs e)
{
//
int ret = Stock_Init(this.Handle, uMsg, "经易贵金属行情分析系统");
if (ret == 1)
{
IntPtr hWndChild = GetHQExeHWND();
IntPtr hWndNewParent = panel1.Handle;
SetWindowPos((int)hWndChild, 0, panel1.ClientRectangle.X, panel1.ClientRectangle.Y, panel1.Width, panel1.Height, 0);
SetParent(hWndChild, hWndNewParent);
SetWindowPos((int)hWndChild, 0, panel1.ClientRectangle.X, panel1.ClientRectangle.Y, panel1.Width, panel1.Height, 0);

//SetWindowPos((int)hWndChild, 0, panel1.ClientRectangle.X, panel1.ClientRectangle.Y, panel1.Width, panel1.Height, 0);

//panel1.Controls.Add();
MessageBox.Show("成功加载咯!!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
但是问题在于红色字体部分完全不起作用啊!
bdmh 2014-05-26
  • 打赏
  • 举报
回复
GetHQExeHWND应该是自定义的,应该是获取一个exe的句柄,你可以通过api的findwindow找到 SetWindowPos是api函数,设置窗口位置 GetClientRect也是api函数, 你通过dllimport引入dll就行了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧