易截截图软件、单文件、免安装、纯绿色、仅160KB

Developer Support Languages VC++, C# and VB.NET


Welcome to Microsoft Developer Support, Languages team blog! You will find a lot of language related troubleshooting resources here.
Troubleshooting PInvoke Related Issues 
I am back with some more PInvoke Stuff.  Recently I was working on a PInvoke issue which I found interesting. 
I have a C++ dll which has a function whose signature is
int TestFunc(IN_STRUCT in_Params, RET_STRUCT * pret_Par). 
I wanted to call this function from C#.  Function has two arguments.  First argument is input structure which will be filled from C# code and passed to C++ code.  Second argument is output structure which is filled in C++ code and output to C# code.
 Here are the C struct definitions and a function that needs to be marshaled
#include "stdafx.h"
#include <stdio.h>
#include "Objbase.h"
#include <malloc.h>
 
 
typedef struct IN_STRUCT
{
      BYTE CMD_PType;
      BYTE CMD_PTType;
      BYTE CMD_OC;     
      BYTE CMD_Seq;
     
};
 
typedef struct RET_STRUCT    
{
  
      BYTE RET_OC;
      BYTE RET_Seq;
      BYTE RET_RetBytes;
      char *str;
      BYTE RET_PD[10];
     
};
 
 
extern "C"  __declspec(dllexport) \
        int TestFunc(IN_STRUCT in_Params, RET_STRUCT * pret_Par)
{
 
      int iRet = 0;
      pret_Par->RET_OC = in_Params.CMD_OC;
      pret_Par-


相关文档:

C#后台调用前台javascript的五种方法


由于项目需要,用到其他项目组用VC开发的组件,在web后台代码无法访问这个组件,所以只好通过后台调用前台的javascript,从而操作这个组件。在网上找了找,发现有三种方法可以访问到前台代码:
第一种,OnClientClick    (vs2003不支持这个方法)
<asp:Button ID="Button1" runat="se ......

Observer 观察者模式 (HeadFirst设计模式 c#)

Observer.cs
using System;
using System.Text;
using System.Collections.Generic;
namespace Observer
{
   
    public interface ISubject
    {
        void RegisterObserver(IOvserver o);
    & ......

C#用泛型,使程序更灵活,也更省性能

先声明,我不是这方面的专家,只是干软件四个月不知天有多高地有多硬的小孩子
首先,类型转换是有一定开销的
我试过这样的代码:这是一个控制台应用程序的Program类的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 类型转换的开销
{
class Program ......

c#事务回滚

c#事务回滚(转)
作者:xue5ya  来源:博客园  发布时间:2009-03-20 16:08  阅读:263 次  原文链接   [收藏]  
Code
public void UpdateContactTableByDataSet(DataSet ds,string strTblName) 

    ......

C#动态调用C++编写的DLL函数


动态加载DLL需要使用Windows API函数:LoadLibrary、GetProcAddress以及FreeLibrary。我们可以使用DllImport在C#中使用这三个函数。

[DllImport("Kernel32")]
public static extern int GetProcAddress(int handle, String funcname);

[DllImport("Kernel32")]
public static extern int L ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号